C#交叉引用泛型类

Ric*_*ver 1 c# generics

我希望两个泛型类能够互相引用.我似乎无法编译任何东西.试过这个:

class Program
{
    static void Main(string[] args)
    {
    }

    public class ClassA<BT> where BT: ClassB<ClassA<BT>>
    {
        BT btvar;
    }

    public class ClassB<AT> where AT: ClassA<ClassB<AT>>
    {
        AT atvar;
    }
}
Run Code Online (Sandbox Code Playgroud)

这有一个实际的实现,但我想避免对我自己的代码进行复杂的解释.我可以创建遵循规则的封闭类,我似乎无法描述那些封闭实例的泛型类或接口.

Mic*_*gem 5

正如我所理解的那样,这是不可能的,这就是为什么:

您想要A,模板值为B类.您需要B,模板值为A类型.

如果你创建一个新的A实例,编译器必须检查T是否为B类.要检查它是否是B类,它必须检查B是A类型,A类型B等等.

你最终创造了一个无限循环.