这是我的代码
public interface ITranslator<E, R>
{
E ToEntity<T>(R record);
}
class Gens : ITranslator<string, int>
{
#region ITranslator<string,int> Members
public string ToEntity<MyOtherClass>(int record)
{
return record.ToString();
}
#endregion
}
编译时,出现错误
Type parameter declaration must be an identifier not a type
为什么我不能拥有
ToEntity<MyOtherClass>
而只能拥有ToEntity<T>
?编辑:
MyOtherClass
在做什么?我在实体(相当于 Entity Framework 的POCO)和记录(由框架返回的对象)之间转换多个表/类。所以我想用这个来做我的类(class)特定的转换 最佳答案
您的界面具有一个通用的ToEntity<T>
方法,您已在实现类Gens
中将其设为ToEntity<MyOtherClass>
成为非通用方法。 (泛型方法可以采用任何类型参数,可能会给T
赋予某些约束。您的Gens
类试图仅为类型参数ToEntity
提供MyOtherClass
的定义,这违背了泛型的目的。)
在您的代码示例中,尚不清楚Gens
类如何尝试使用MyOtherClass
类型。它肯定不参与ToEntity
的逻辑。我们需要更多信息,才能进一步指导您。
为了说明这一点,这是您目前对ITranslator<E, R>
接口(interface)的定义(用简单的英语提供):
另一方面,您的Gens
类的当前设计方式是“实现”上述接口(interface),如下所示:
从这两个描述中,很明显Gens
类并没有真正完成ITranslator<E, R>
接口(interface)所保证的。即,它不愿意为其ToEntity
方法接受用户指定的类型。这就是为什么此代码不会为您编译的原因。