Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用MEF注册输入代码?_C#_.net_Dependency Injection_Prism_Mef - Fatal编程技术网

C# 如何使用MEF注册输入代码?

C# 如何使用MEF注册输入代码?,c#,.net,dependency-injection,prism,mef,C#,.net,Dependency Injection,Prism,Mef,我有一个需要在代码中注册的自定义类型实例: container.RegisterType( typeof(Isome), myvar); 所以它可以像这样正常使用: [Import] ISome var1 ; 如何获取对容器的引用?我不知道Prism,但在MEF中,您不向容器注册类型-这引入了一种依赖关系,从而破坏了代码解耦的目的 要使ISome类型可供MEF发现,您需要在实现ISome接口的类上添加[Export(typeof(ISome))]属性 在composition中,MEF

我有一个需要在代码中注册的自定义类型实例:

container.RegisterType( typeof(Isome), myvar);
所以它可以像这样正常使用:

 [Import] 
 ISome var1 ;

如何获取对容器的引用?

我不知道Prism,但在MEF中,您不向容器注册类型-这引入了一种依赖关系,从而破坏了代码解耦的目的

要使
ISome
类型可供MEF发现,您需要在实现
ISome
接口的类上添加
[Export(typeof(ISome))]
属性

在composition中,MEF将看到在ISome接口类型上键入的导入属性,然后查找在ISome接口类型上键入的匹配导出。它将找到具有Export属性的实现类。MEF将创建导出类的实例,并将其分配给导入属性


在合成步骤中,您需要为MEF提供一个类型或程序集的目录,以便加载并执行其匹配魔术。确保包含您的实现类的程序集位于该目录组中。

我理解,但实现ISome的类型需要一些自定义初始化,因此问题是什么样的自定义初始化?