代码之家  ›  专栏  ›  技术社区  ›  joshcomley

在非泛型上下文中是否有一种引用泛型类的干净方法?

  •  1
  • joshcomley  · 技术社区  · 15 年前

    考虑以下事项:

    public interface ICleanCoder
    {
        void DoSomeCoding(object task);
    }
    
    public interface ICleanCoder<T>
    {
        void DoSomeCoding(T task);
    }
    
    ...
    
    public class TestCleanCoding
    {
        void RegisterCleanCoder(ICleanCoder coder);
    }
    

    我必须有一个初始的非通用接口,以便稍后启用对它的非通用引用。我知道从技术上讲这很有道理,但我觉得这个解决方案有点难闻,我想知道我是否遗漏了什么。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Ana Betts    15 年前

    不幸的是,这是实现这一点的唯一方法,除非您也希望对模板进行testcleancoder编码(这是一个合理的设计决策,并且不会放弃icleancoder作为模板的好处);此外,您还遗漏了一个重要部分:

    public interface ICleanCoder<T> : ICleanCoder
    {
        void DoSomeCoding(T task);
    }
    

    否则,模板化接口与基本接口无关。