是否可以在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.
}

10-06 09:31