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

时间:2009-05-31 23:36:51

标签: c# .net generics

请考虑以下事项:

public interface ICleanCoder
{
    void DoSomeCoding(object task);
}

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

...

public class TestCleanCoding
{
    void RegisterCleanCoder(ICleanCoder coder);
}

我必须拥有初始非通用接口,以便稍后启用非泛型引用。我知道从技术上说这很有道理,但解决方案对我来说有点腐烂,我想知道我是否遗漏了什么。

1 个答案:

答案 0 :(得分:2)

不幸的是,这是唯一的方法,除非你想让TestCleanCoding成为一个模板(这是一个合理的设计决定,不会丢弃ICleanCoder作为模板的好处);另外,你遗漏了一个重要的部分:

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

否则,模板化界面与基本界面无关。