C#模板类,其中T:ITemplate<;任何>;
我想做一些类似的事情:C#模板类,其中T:ITemplate<;任何>;,c#,templates,inheritance,C#,Templates,Inheritance,我想做一些类似的事情: class ClassA<T>: ClassB where T : ITemplatedInterface<Any> { } 类别A:B,其中T:ITemplatedInterface { } 尽管我不能这样做,因为“Any”必须是实类型(或通过ClassA传递的模板类型) 例如,T可以是继承ITemplatedInterface的类,但我不想在ClassA中指定具体类型,我只想确保T继承自ITemplatedInterface 我知道这可以通
class ClassA<T>: ClassB where T : ITemplatedInterface<Any>
{
}
类别A:B,其中T:ITemplatedInterface
{
}
尽管我不能这样做,因为“Any”必须是实类型(或通过ClassA
传递的模板类型)
例如,T
可以是继承ITemplatedInterface
的类,但我不想在ClassA
中指定具体类型,我只想确保T
继承自ITemplatedInterface
我知道这可以通过将
SomeConcreteType
作为ClassA
中的第二个模板类型来解决,但我想避免这种情况。在这种情况下,您真的需要ITemplatedInterface
泛型吗?@PavelAnikhouski是的,因为它存在并且在这个类之外使用。您能让ITemplatedInterface从m一个新的非通用接口:ITemplatedInterface,并将classA的T约束绑定到该接口上?@NikolaDim您可以共享最小的可复制样本吗?以及ITemplatedInterface
和classA
的来源,因为不清楚,这个声明classA:ClassB的T:ITemplat>有什么问题eInterface
通过使itemplatedinInterface
非generic@PavelAnikhouski
的问题是ClassA
只适用于该类型。我很好奇是否可以使用从模板化接口继承的类型T
,而不指定具体类型。可能这个能力是不必要的(或者表示有代码气味),但我想知道它是否可以在不重新构造代码的情况下实现。谢谢!在这种情况下,您真的需要ITemplatedInterface
泛型吗?@PavelAnikhouski是的,因为它存在并且与这个类分开使用。您可以让ITemplatedInterface从一个新的非泛型接口继承:ITemplatedInterface并具有T约束f吗或者classA与之绑定?@NikolaDim您可以共享最小可复制样本吗?以及ITemplatedInterface
和classA
的来源,因为不清楚,此声明的问题是什么classA:ClassB其中T:ITemplatedInterface
您可以通过制作ItemPlate接口
非generic@PavelAnikhouski
的问题是ClassA
只适用于该类型。我很好奇,是否可以使用从模板接口继承的类型T
,而不指定具体类型。可能这种能力是不必要的(或发出代码气味的信号),但我想知道在不重构代码的情况下是否可行。谢谢!