60 lines
768 B
C#
60 lines
768 B
C#
|
class BaseGeneric<T>
|
||
|
{
|
||
|
public class InnerDerived
|
||
|
{
|
||
|
public InnerDerived (T t)
|
||
|
{
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public class GenericInnerDerived<U>
|
||
|
{
|
||
|
public GenericInnerDerived (T t, U u)
|
||
|
{
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class BaseConcrete : BaseGeneric<string>
|
||
|
{
|
||
|
}
|
||
|
|
||
|
class Concrete_A : BaseGeneric<int>
|
||
|
{
|
||
|
}
|
||
|
|
||
|
class Concrete_B : BaseConcrete
|
||
|
{
|
||
|
InnerDerived foo1;
|
||
|
}
|
||
|
|
||
|
class BaseGeneric_2<T, U>
|
||
|
{
|
||
|
public class InnerDerived
|
||
|
{
|
||
|
public InnerDerived (T t, U u)
|
||
|
{
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class BaseGeneric_1<T> : BaseGeneric_2<T, string>
|
||
|
{
|
||
|
}
|
||
|
|
||
|
class Concrete_2 : BaseGeneric_1<bool>
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
class Program
|
||
|
{
|
||
|
public static void Main ()
|
||
|
{
|
||
|
new Concrete_B.InnerDerived ("abc");
|
||
|
new Concrete_A.InnerDerived (11);
|
||
|
new Concrete_A.GenericInnerDerived<int> (1, 2);
|
||
|
new Concrete_2.InnerDerived (false, "bb");
|
||
|
}
|
||
|
}
|