在C#中从接口创建对象

wow*_*ows 12 .net c#

仅给定一个接口,可以从中创建一个对象?

就像是:

var obj = new IWidget();
Run Code Online (Sandbox Code Playgroud)

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

我在我的项目引用接口的上下文中,我想创建具体对象并从方法返回它们 - 但我无法弄清楚如何完全从接口创建对象.

Jon*_*eet 10

由于编译器的魔法,该代码实际上对于COM对象是正确的.通常情况并非如此.

问题是,编译器如何知道要创建哪个实现?周围可能有任何数字.您可能需要考虑为接口设置工厂,或者可能使用依赖注入(例如使用Spring.NETCastle Windsor).


tay*_*onr 10

您无法从界面创建对象.您可以从使用该接口的类创建对象.

例如:

IList<string> x = new IList<string>();
Run Code Online (Sandbox Code Playgroud)

不管用.

IList<string> x = new List<string>();
Run Code Online (Sandbox Code Playgroud)

将.

无法创建接口,只能创建使用该接口的对象.