我在WPF应用程序中使用Prism Unity,并且我有一些问题需要理解共享服务的正确实现。模块化共享服务接口体系结构和Interfaceversiondescription
我创建了一个DLL项目并添加了一个接口。
接口(DLL):
public interface IMyservice
{
string Version { get; }
int DoSomething(int x, int y);
}
接口的实现(类)在模块内完成,该模块被加载于主机应用程序启动的,当然,我说我的DLL接口作为参考我的主机应用程序。
ModuleA:
public class Myservice : IMyservice
{
public string Version => "V1.00";
public int DoSomething(int x, int y)
{
return x + y;
}
}
我注册在我的主机应用程序的引导程序的IMyservice。我添加到ModuleB项目接口DLL作为参考,然后我能够通过从统一容器解析使用Myservice的实例。
container.Resolve<MyService>.DoSomething(1,1);
问题:
这是架构有效或我必须把接口的实现到我interface.dll?我在模块中实现了接口,因为我只想与其他人共享我的interface.dll而不是实现。我把这个实现放在moduleA中,因为我想要它的模块化。
如果这个架构是有效的设计,那么我想知道,我如何能够在运行时处理我的interface.dll的版本描述,而不是moduleA的版本描述。
是否要对_implementation_或_interface_进行版本化?目前,您对版本进行了版本升级,“AdvancedServcie”可能会返回'V2.00'作为'版本',但它们都实现相同的接口。看看我对这个相关问题的答案:https://stackoverflow.com/questions/40827080/c-sharp-prism-for-wpf-common-modules-libraries-upgrading-strategy/40827662#40827662 – Haukinger
我想版本都是接口和实现,但彼此独立。 – Shazter