是否可以在.NET中使用两个名称相同但模板类型不同的模板类?

时间:2014-04-09 09:42:21

标签: .net templates

是否可以在同一名称空间中包含以下两个类?因为编译器向我抛出错误:

public abstract class EPiPresenter<TView, TPageDataType> : Presenter<TView> 
    where TView : class, IView 
    where TPageDataType : PageData
{
}

public abstract class EPiPresenter<TView, TDataType> : Presenter<TView>
    where TView : class, IView
    where TDataType : CatalogContentBase
{

}

PageData和CatalogContentBase没有任何继承关系。

2 个答案:

答案 0 :(得分:2)

不,这是不可能的,因为只有类型参数的数字才算。 CLR类型名称(由Type.FullName返回)实际上看起来像

Namespace.TypeName`2

其中2是类型参数的数量(并且重音字符不是拼写错误)。

答案 1 :(得分:1)

不,那是不可能的。引用MSDN:

  

类的完全限定名称是通过连接构造的   包含类型

的所有名称空间的名称

编辑:感谢usr注意到。 MSDN并不完全准确。类型参数的数量也包括在内。

class GenericType1<TType1>被翻译为

  

GenericType1`1

class GenericType2<TType1, TType2>被翻译为

  

GenericType2`2