我想做类似下面的事情
public interface IFormatter<TData, TFormat>
{
TFormat Format(TData data);
}
public abstract class BaseFormatter<TData> : IFormatter<TData, XElement>
{
public abstract XElement Format(TData data);
}
但是,当我执行上述操作时,我收到的错误是“类型或方法有2个通用参数,但只提供了1个......”。我会尝试用另一种方式解决它,但我很好奇为什么不能这样做?
请注意,虽然这在单个程序集中编译,但我注意到错误消息实际上是由使用这段代码的程序集(测试程序集)生成的。这是生成上述错误消息的地方。
答案 0 :(得分:4)
这是您拥有的完全代码吗?如果是,那么您错过了关键字 class
除此之外,这应该编译得很好:
public interface IFormatter<TData, TFormat>
{
TFormat Format(TData data);
}
public abstract class BaseFormatter<TData> : IFormatter<TData, XElement>
{
// blah blah
public XElement Format(TData data)
{
throw new NotImplementedException();
}
}
答案 1 :(得分:1)
是否可能(间接)抱怨抽象类声明中缺少的'class'关键字?
答案 2 :(得分:0)
此代码符合我的要求:
public interface IFormatter<TData, TFormat>
{
TFormat Format(TData data);
}
public abstract class BaseFormatter<TData> : IFormatter<TData, XElement>
{
#region IFormatter<TData,XElement> Members
public XElement Format(TData data)
{
throw new NotImplementedException();
}
#endregion
}
答案 3 :(得分:0)
万一有人遇到此问题:
事实证明,该问题与同一解决方案中MSTest单元测试项目中的私有字段访问器有关。当我删除了项目编译的访问者时。