我有这种情况:
class A<T>
我想要像
这样的人类约束class A<T> where T: Person
我希望A也从B继承。
示例:
class A<T> : B : where T: Person
或
class A<T> where T: Person, B
我该怎么办?
答案 0 :(得分:3)
class A<T> : B where T : Person
答案 1 :(得分:1)
您是否在询问如何在C#中表达此结构?如果是这样的话:
class Program
{
static void Main(string[] args)
{
B a1 = new A<Person>();
B a2 = new A<ChildPerson>();
}
}
class Person
{
}
class ChildPerson : Person
{
}
class A<T> : B where T: Person
{
}
class B
{
}
答案 2 :(得分:1)
您无法从C#中的多个类继承。所以你可以拥有
A<T>
继承自B
而T
是Person
(Person
是类或接口):
class A<T>: B where T: Person {
...
}
A<T>
不需要继承B
;但是T
继承自B
并且实施Person
(Person
只能接口):
class A<T> where T: Person, B {
...
}
似乎你想要案例1:
// A<T> inherites from B;
// T is restricted as being Person (Person is a class or interface)
class A<T>: B where T: Person {
...
}
答案 3 :(得分:0)
C#中没有多重继承,因此您无法强制类型继承多个类。
听起来你的结构不正确。
为了确保两者都是实现的,其中一个必须是一个接口,或者其中一个必须实现另一个接口。
如果你的意思是T可以实现B或Person,那么应该有一些抽象的基类/接口,B和Person共享你限制的那个