我有一个应用程序(只是一个测试),它使用MEF和PRISM。
并将它们传递给正在加载的模块的构造函数,但我正在尝试做一些不同的事情。
当应用程序启动时,它将导入IControllerClient的实现。
应用程序中的每个模块都应该可以访问它。
我不想在Shell上有公共属性或公开
更新:
重新表述下面的问题
我可以将它们加载到prism应用程序的模块中,例如:
[ImportingConstructorAttribute()]
public HelloWorldView(IDataTransportService dataTransportService,
IMessageFactory messageFactory,
IDataFactory dataFactory,
IDataProcessor dataProcessor,
IDataCollector dataCollector)
{
var client = new ControllerClient(dataTransportService,
messageFactory,
dataProcessor
dataCollector);
}
在这种情况下,模块将创建ControllerClient类的有效实例。
但是我不想把这些接口传递给构造函数,而是想要一个模块
构造器如下:
[ImportingConstructorAttribute()]
public HelloWorldView(IClient client)
{
this.client = client;
}
[ImportingConstructorAttribute()]所以我希望注入依赖项
此时自动。。。然而,使用这段代码,甚至永远也达不到构造函数。
我想要的是有一个IClient接口的实例
应用程序中的所有模块(我知道现在共享是MEF导入的默认值)。
因此,在mef/prism应用程序中,您将在哪里定义所有模块都可以使用的实例?这就是通常所说的服务(但我只能找到使用unity/prism公开服务的指导)。
我希望这次能更好地解释我的问题。
更新2: