code_junkie

internal member in an interface

Nov 12th, 2011
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. public interface IAM
  2. {
  3. int ID { get; set; }
  4. void Save();
  5. }
  6.  
  7. public class concreteIAM : IAM
  8. {
  9. public int ID{get;set;}
  10. internal void Save(){
  11. //save the object
  12. }
  13.  
  14. //other staff for this particular class
  15. }
  16.  
  17. public class MyList : List<IAM>
  18. {
  19. public void Save()
  20. {
  21. foreach (IAM iam in this)
  22. {
  23. iam.Save();
  24. }
  25. }
  26.  
  27. //other staff for this particular class
  28. }
  29.  
  30. internal void Save(){
  31.  
  32. public abstract class AM
  33. {
  34. public int ID { get; set; }
  35. internal abstract void Save();
  36. }
  37.  
  38. public class concreteIAM : AM
  39. {
  40. internal override void Save()
  41. {
  42. //Do some save stuff
  43. }
  44. }
  45.  
  46. public class AMList : List<AM>
  47. {
  48. public void SaveItems()
  49. {
  50. foreach (var item in this)
  51. {
  52. item.Save();
  53. }
  54. }
  55. }
  56.  
  57. internal interface InternalIAM
  58. {
  59. void Save();
  60. }
  61.  
  62. public class concreteIAM : InternalIAM
  63. {
  64. void InternalIAM.Save()
  65. {
  66. }
  67. }
  68.  
  69. internal interface IAMSaver { void Save(IAM item); }
  70.  
  71. internal class AMSaverFactory {
  72. IAMSaver GetSaver(Type itemType) { ... }
  73. }
  74.  
  75. public class MyList : List<IAM>
  76. {
  77. public void Save()
  78. {
  79. foreach (IAM itemin this)
  80. {
  81. IAMSaver saver = SaverFactory.GetSaver(item.GetType());
  82. saver.Save(item)
  83. }
  84. }
  85. }
  86.  
  87. internal interface IPersist
  88. {
  89. void Save();
  90. }
  91. public class Concrete : IPersist
  92. {
  93. void IPersist.Save()
  94. {
  95. Console.WriteLine("Yeah!");
  96. }
  97. }
  98.  
  99. // Mylist.cs in the same assembly can still call save like
  100. public void SaveItems()
  101. {
  102. foreach (IPersist item in this)
  103. {
  104. item.Save();
  105. }
  106. }
  107.  
  108. new Concrete().Save(); // doesn't compile. 'Concrete' does not contain a definition for 'Save'
  109.  
  110. public interface IAM
  111. {
  112. int ID { get; set; }
  113. }
  114.  
  115.  
  116. internal interface IAMSavable
  117. {
  118. void Save();
  119. }
  120.  
  121. public class concreteIAM : IAM, IAMSavable
  122. {
  123. public int ID{get;set;}
  124. public void IAMSavable.Save(){
  125. //save the object
  126. }
  127.  
  128. //other staff for this particular class
  129. }
  130.  
  131. public class MyList : List<IAM>
  132. {
  133. public void Save()
  134. {
  135. foreach (IAM iam in this)
  136. {
  137. ((IAMSavable)iam).Save();
  138. }
  139. }
  140.  
  141. //other staff for this particular class
  142. }
  143.  
  144. public abstract class Item
  145. {
  146. public int ID { get; set; }
  147. protected abstract void Save();
  148.  
  149. public class ItemCollection : List<Item>
  150. {
  151. public void Save()
  152. {
  153. foreach (Item item in this) item.Save();
  154. }
  155. }
  156. }
  157.  
  158. public sealed class NiceItem : Item
  159. {
  160. protected override void Save()
  161. {
  162. // do something
  163. }
  164. }
  165.  
  166. using System;
  167.  
  168. public interface IPublic
  169. {
  170. void Public();
  171. }
  172.  
  173. internal interface IInternal : IPublic
  174. {
  175. void Internal();
  176. }
  177.  
  178. public class Concrete : IInternal
  179. {
  180. public void Internal() { }
  181.  
  182. public void Public() { }
  183. }
  184.  
  185. public interface IAM
  186. {
  187. int ID { get; set; }
  188. }
  189. internal interface IAMSave
  190. {
  191. void Save();
  192. }
  193.  
  194. public class concreteIAM : IAM, IAMSave
  195. {
  196. public int ID { get; set; }
  197. internal void Save()
  198. {
  199. //save the object
  200. }
  201. //other staff for this particular class
  202. }
  203.  
  204. public class MyList : List<IAM>
  205. {
  206. public void Save() {
  207. foreach (IAM iam in this) {
  208. ((IAMSave)iam).Save();
  209. }
  210. }
  211. //other staff for this particular class
  212. }
Add Comment
Please, Sign In to add comment