【发布时间】:2017-04-28 19:11:06
【问题描述】:
我在 WPF 应用程序中使用 Prism Unity,但在理解共享服务的正确实现方面存在一些问题。
我创建了一个 DLL 项目并添加了一个接口。
接口(DLL):
public interface IMyservice
{
string Version { get; }
int DoSomething(int x, int y);
}
接口实现(类)在模块内部完成,模块在主机应用程序启动时加载,当然,我在主机应用程序中添加了我的接口 DLL 作为引用。
模块A:
public class Myservice : IMyservice
{
public string Version => "V1.00";
public int DoSomething(int x, int y)
{
return x + y;
}
}
我在我的主机应用程序的引导程序中注册了 IMyservice。我在 ModuleB Project 中添加了接口 DLL 作为参考,然后我可以通过从统一容器解析来使用 Myservice 的实例。
container.Resolve<MyService>.DoSomething(1,1);
问题:
此架构是否有效,或者我必须将接口的实现放入我的 interface.dll 中?我在模块中实现了接口,因为我只想与其他人共享我的 interface.dll 而不是实现。我将实现放在 moduleA 中,因为我想让它模块化。
-
如果这个架构是有效的设计,那么我想知道,我如何能够在运行时处理我的 interface.dll 的版本描述,而不是 moduleA 的版本描述。
李>
【问题讨论】:
-
您要版本化实现还是接口?目前,您对实现进行版本控制,
AdvancedServcie可能会为Version返回V2.00,但它们都实现了相同的接口。看看我对这个相关问题的回答:stackoverflow.com/questions/40827080/… -
我想要接口和实现的版本,但相互独立。
标签: unity-container prism