在这种情况下定义一个通用的 class
Define a generic class in this case
我在 C# 4.0 中使用泛型。这是我的代码:
public class Class1
{
}
public class SubClass1 : Class1
{
}
public class Class2
{
}
public class SubClass2 : Class2
{
}
public class GenericClass1<T1, T2>
where T1 : Class1
where T2 : Class2
{
}
public class MyClass1 : GenericClass1<SubClass1, SubClass2>
{
}
// error here
public class GenericClass2<GenericClass1<T1, T2>>
where T1 : Class1
where T2 : Class2
{
}
public class MyClass2 : GenericClass2<MyClass1>
{
}
我在编译 GenericClass2 时出错 "Type parameter declaration must be an identifier not a type"。任何人都可以帮助我拯救或找到这种通用案例的解决方案。谢谢
试试这个:
public class GenericClass2<TGeneric, T1, T2>
where TGeneric: GenericClass1<T1, T2>
where T1 : Class1
where T2 : Class2
{
}
遗憾的是,您不能在 class 定义中使用嵌套声明,如下所示:GenericClass2<GenericClass1<T1, T2>>
。您可以改用这样的代码:
public class GenericClass1<T1, T2>
where T1: Class1
where T2: Class2
{
}
public class MyClass1 : GenericClass1<SubClass1, SubClass2>
{
}
public class GenericClass2<T1, T2, T3>
where T1: Class1
where T2: Class2
where T3:GenericClass1<T1, T2>
{
}
public class MyClass2 : GenericClass2<SubClass1, SubClass2, MyClass1>
{
}
您也可以像下面这样使用-
public class Class1
{
}
public class SubClass1 : Class1
{
}
public class Class2
{
}
public class SubClass2 : Class2
{
}
public class GenericClass1<T1, T2>
where T1 : Class1
where T2 : Class2
{
}
public class MyClass1 : GenericClass1<SubClass1, SubClass2>
{
}
public class GenericClass2<U>
where U : GenericClass1<SubClass1, SubClass2>
{
}
public class MyClass2 : GenericClass2<MyClass1>
{
}
我在 C# 4.0 中使用泛型。这是我的代码:
public class Class1
{
}
public class SubClass1 : Class1
{
}
public class Class2
{
}
public class SubClass2 : Class2
{
}
public class GenericClass1<T1, T2>
where T1 : Class1
where T2 : Class2
{
}
public class MyClass1 : GenericClass1<SubClass1, SubClass2>
{
}
// error here
public class GenericClass2<GenericClass1<T1, T2>>
where T1 : Class1
where T2 : Class2
{
}
public class MyClass2 : GenericClass2<MyClass1>
{
}
我在编译 GenericClass2 时出错 "Type parameter declaration must be an identifier not a type"。任何人都可以帮助我拯救或找到这种通用案例的解决方案。谢谢
试试这个:
public class GenericClass2<TGeneric, T1, T2>
where TGeneric: GenericClass1<T1, T2>
where T1 : Class1
where T2 : Class2
{
}
遗憾的是,您不能在 class 定义中使用嵌套声明,如下所示:GenericClass2<GenericClass1<T1, T2>>
。您可以改用这样的代码:
public class GenericClass1<T1, T2>
where T1: Class1
where T2: Class2
{
}
public class MyClass1 : GenericClass1<SubClass1, SubClass2>
{
}
public class GenericClass2<T1, T2, T3>
where T1: Class1
where T2: Class2
where T3:GenericClass1<T1, T2>
{
}
public class MyClass2 : GenericClass2<SubClass1, SubClass2, MyClass1>
{
}
您也可以像下面这样使用-
public class Class1
{
}
public class SubClass1 : Class1
{
}
public class Class2
{
}
public class SubClass2 : Class2
{
}
public class GenericClass1<T1, T2>
where T1 : Class1
where T2 : Class2
{
}
public class MyClass1 : GenericClass1<SubClass1, SubClass2>
{
}
public class GenericClass2<U>
where U : GenericClass1<SubClass1, SubClass2>
{
}
public class MyClass2 : GenericClass2<MyClass1>
{
}