60 lines
768 B
C#
Raw Normal View History

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");
}
}