Guest User

Untitled

a guest
Jun 23rd, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. public class MyGenericClass : DL
  2. //but i cannot do
  3. public class MyGenericClass <T> : T
  4.  
  5. public class MyGenericClass <T>
  6. {
  7. T obj;
  8. //have all MyGenericClass.XYZ call obj.XYZ
  9. }
  10.  
  11. public interface IXyzable { void xyz(); }
  12.  
  13. public class MyGenericClass<T> : IXyzable where T : IXyzable {
  14. T obj;
  15. public void xyz() {
  16. obj.xyz();
  17. }
  18. }
  19.  
  20. public interface Ixyz
  21. {
  22. void XYZ();
  23. }
  24.  
  25. public class MyGenericClass<T> : Ixyz where T:Ixyz, new()
  26. {
  27. T obj;
  28.  
  29. public MyGenericClass()
  30. {
  31. obj = new T();
  32. }
  33.  
  34. public void XYZ()
  35. {
  36. obj.XYZ();
  37. }
  38. }
  39.  
  40. var x = new MyGenericClass<MyGenericClass<SomeClass>>();
  41.  
  42. public class MyGenericClass<T> : T
  43.  
  44. public class MyGenericClass<T>
  45. {
  46. T obj;
  47. }
  48.  
  49. public class MyGenericClass
  50. {
  51. object obj;
  52. }
  53.  
  54. class MyBase
  55. {
  56. public virtual void MyVirtual() { }
  57. }
  58.  
  59. class MyGenericDerived<T> : T
  60. {
  61. public override void MyVirtual()
  62. {
  63. Console.WriteLine("Overridden!");
  64. }
  65. }
  66.  
  67. MyBase obj = new MyGenericDerived<MyBase>();
  68. obj.MyVirtual();
  69.  
  70. class BaseClass<T>
  71. {
  72. public T property { get; set; }
  73. }
  74.  
  75. class GenericClass<T> : BaseClass<T>
  76. {
  77.  
  78. }
  79.  
  80. class Program
  81. {
  82. static void Main(string[] args)
  83. {
  84.  
  85. GenericClass<int> l = new GenericClass<int>();
  86. l.property = 10;
  87. }
  88. }
  89.  
  90. class BaseGeneric<T>
  91. {
  92. private T obj;
  93. private MethodInfo mi;
  94. private const string MethodNameOfInterest = "Xyz";
  95.  
  96. public BaseGeneric(T theObject)
  97. {
  98. this.obj = theObject;
  99. Type t = obj.GetType();
  100. mi = t.GetMethod(MethodNameOfInterest);
  101. }
  102.  
  103. public void Xyz()
  104. {
  105. mi.Invoke(obj, null);
  106. }
  107. }
Add Comment
Please, Sign In to add comment