C# 循环泛型语法
我有下面的场景,我不知道如何正确地声明允许我使用类型强制。删除C# 循环泛型语法,c#,generics,C#,Generics,我有下面的场景,我不知道如何正确地声明允许我使用类型强制。删除where子句可以很好地工作,但我更希望能够使用它们来强制执行类型安全。你知道我该怎么做吗 class ClassA<TB, TC> where TB : ClassB where TC : ClassC { private TB MyPropB; private TC MyPropC; } class ClassB<TC> where TC : ClassC { private TC
where
子句可以很好地工作,但我更希望能够使用它们来强制执行类型安全。你知道我该怎么做吗
class ClassA<TB, TC> where TB : ClassB where TC : ClassC
{
private TB MyPropB;
private TC MyPropC;
}
class ClassB<TC> where TC : ClassC
{
private TC MyPropC;
}
class ClassC<TB> where TB : ClassB
{
private TB MyPropB;
}
A类,其中TB:B类,其中TC:C类
{
私人结核病MyPropB;
私人TC MyPropC;
}
B类,其中TC:C类
{
私人TC MyPropC;
}
C类,其中TB:B类
{
私人结核病MyPropB;
}
在每个类中指定两个泛型类型参数似乎有效:
class ClassA<TB, TC>
where TB : ClassB<TB, TC>
where TC : ClassC<TB, TC>
{
public TB MyPropB { get; set; }
public TC MyPropC { get; set; }
}
class ClassB<TB, TC>
where TB : ClassB<TB, TC>
where TC : ClassC<TB, TC>
{
public TC MyPropC { get; set; }
}
class ClassC<TB, TC>
where TB : ClassB<TB, TC>
where TC : ClassC<TB, TC>
{
public TB MyPropB { get; set; }
}
你想在这里做什么?您所拥有的不会起作用,因为您没有类型
ClassB
和ClassC
,而只有类型ClassB
和ClassC
(泛型类)。它不是递归的,而是circular@TonyHopkinson当然我一直在追根究底,想弄明白这一点,我分不清循环和递归为了将来的利益,我重新命名了这篇文章。用这种方式写这篇文章感觉很奇怪,但似乎效果很好。非常感谢!!!
class Ape : ClassA<Bear, Cougar>
{
}
class Bear : ClassB<Bear, Cougar>
{
}
class Cougar : ClassC<Bear, Cougar>
{
}