ViIvanov

Untitled

Apr 9th, 2013
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.59 KB | None | 0 0
  1. abstract class A { }
  2. class A1 : A { }
  3. class A2 : A { }
  4. class A3 : A { }
  5.  
  6. class C
  7. {
  8.   public C(A1 a) { }
  9.   public C(A2 a) { }
  10. }
  11.  
  12. class X<T> where T: new(A)
  13. {
  14.   public static T Make1() {
  15.     return new T(default(A3));
  16.   }
  17.  
  18.   public static T Make2<Y>(Y a) where Y : A {
  19.     return new T(a);
  20.   }
  21.  
  22.   public static T Make3(A a) {
  23.     return new T(a);
  24.   }
  25. }
  26.  
  27. class P
  28. {
  29.   static void Main() {
  30.     var x1 = X<C>.Make1();
  31.     var x21 = X<C>.Make2(default(A1));
  32.     var x22 = X<C>.Make2(default(A3));
  33.     var x31 = X<C>.Make3(default(A2));
  34.     var x32 = X<C>.Make3(default(A3));
  35.   }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment