Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#模板类,其中T:ITemplate<;任何>;_C#_Templates_Inheritance - Fatal编程技术网

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
,而不指定具体类型。可能这种能力是不必要的(或发出代码气味的信号),但我想知道在不重构代码的情况下是否可行。谢谢!