代码之家  ›  专栏  ›  技术社区  ›  Jeffrey Cameron

基于C中的一些泛型参数实现抽象类#

  •  0
  • Jeffrey Cameron  · 技术社区  · 16 年前

    我想做如下的事情

    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个…”的错误。我会尝试用另一种方法来解决,但我很好奇为什么不能做到这一点?

    请注意,虽然这是在单个程序集中编译的,但我已经注意到错误消息实际上是由使用此代码段的程序集(测试程序集)生成的。这就是生成上述错误消息的地方。

    4 回复  |  直到 16 年前
        1
  •  4
  •   Josh    16 年前

    那是 准确的 你有密码吗?如果是,那么您缺少关键字 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();
        }
    }
    
        2
  •  1
  •   Jonathan Rupp    16 年前

    它是否可能(间接)抱怨抽象类声明中缺少“class”关键字?

        3
  •  0
  •   veggerby    16 年前

    我方遵守本规范:

    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
    }
    
        4
  •  0
  •   Jeffrey Cameron    16 年前

    以防有人有此问题:

    结果表明,该问题与同一解决方案中MSTest单元测试项目中的私有字段访问器有关。当我移除访问器时,编译的项目。