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

在C中从接口创建对象#

  •  10
  • wows  · 技术社区  · 16 年前

    比如:

    var obj = new IWidget();
    

    (我知道这段代码不对-VS无法创建IWidget实例)

    5 回复  |  直到 16 年前
        1
  •  11
  •   taylonr    16 年前

    不能从接口创建对象。可以从使用该接口的类创建对象。

    例如:

    IList<string> x = new IList<string>();
    

    IList<string> x = new List<string>();
    

    威尔。

        2
  •  10
  •   Jon Skeet    16 年前

    问题是,编译器是如何知道的 哪一个 Spring.NET Castle Windsor

        3
  •  4
  •   Chris Pitman    16 年前

    这是不可能的 纯粹地

    你基本上会想要一个 Factory Pattern . 此模式涉及创建一个返回接口的方法,但在内部实例化一个具体类型。它允许您对使用接口的任何人隐藏具体类型。

    如果你更进一步,你可以使用控制反转(IoC)。我不知道在.Net中执行此操作的最佳选项是什么,但有一个选项是 Spring.Net . 您可以使用配置文件为具体对象定义所有不同的设置,然后让spring自动将这些实例“注入”到使用该接口的类中。

        4
  •  0
  •   chrissie1    16 年前

    不可能是简单的答案。但是我想你可以使用IoC容器来注入一个实现。

        5
  •  0
  •   oefe    16 年前

    你可能在找一个 Dependency Injection 框架

    推荐文章