循环泛型语法
本文关键字:语法 泛型 循环 | 更新日期: 2023-09-27 17:56:40
我有以下情况,我不知道如何正确声明允许我使用类型强制。 删除 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;
}
在每个类中指定两个泛型类型参数似乎有效:
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
需要TC
自己的属性,TB
where 子句中的类型参数,ClassC
具有TB
属性,反之亦然。在任何地方都有两个泛型类型参数似乎是有意义的,因为类ClassB
和ClassC
总是成对地一起工作。
您可以像这样定义具体类:
class Ape : ClassA<Bear, Cougar>
{
}
class Bear : ClassB<Bear, Cougar>
{
}
class Cougar : ClassC<Bear, Cougar>
{
}