是否可以在c#中执行以下操作?
基本上TParent和TChildren应该是A类的类型,但不必一定具有与传入的类型相同的类型。我知道这听起来可能令人困惑,但是我想强类型一个特定对象的子代和父代,但是同时它们必须是同一类型。因为TParent从A继承,这意味着它需要从A继承但使用潜在不同类型的类型参数。
public class A<TParent, TChildren>
where TParent : A
where TControls : A
{
TParent Parent;
List<TChildren> Children;
}
或更容易在这里看到:
public class A<TParent, TChildren>
where TParent : A<?, ?>
where TChildren : A<?, ?>
{
TParent Parent;
List<TChildren> Children;
}
我希望这不会太令人困惑。这是可能吗?
谢谢 :)
最佳答案
不,这是不可能的。但是,一种解决方法是创建A<TParent, TChild>
的子类,并强制通用类型参数具有该类型:
public interface A
{
// some properties and methods
}
public class A<TParent, TChild> : A where TParent : A where TChild A
{
// something else here.
}