语言:C#
IDE:Visual Studio 2010
.Net版本:4.0
客户端:Silverlight 5
我们有一个应用程序,它将一系列UI对象的序列化版本存储在数据库模式中。对于此模式中的每个UI对象,我们将其所属的对象,名称空间和版本序列化,因此 -
<UIObject>MyCompany.MyProject.MyControlName, 1.0.0.0</UIObject>
现在说我们希望在其中一个对象DLL中进行重大更改,但希望保持向后兼容性 - 我们想要做的是在更新版本的XML中输出类似以下内容的内容 -
<UIObject>MyCompany.MyProject.MyControlName, 2.0.0.0</UIObject>
现在,我们在app中的解析器中实例化这些对象,此解析器使用类似于以下内容的反射代码:
Assembly asm = Assembly.LoadFrom(assembly);
Type classtype = asm.GetType(type, true, false);
object dynamicObject = Activator.CreateInstance(classtype);
MethodInfo invokedMethod = classtype.GetMethod(method);
return invokedMethod.Invoke(dynamicObject,parameters);
我的问题是什么是引用两个不同的DLL(如果可能的话具有相同的命名空间)的最佳方式,以便使用反射的代码可以根据XML中的版本轻松实例化不同的对象?
到目前为止我看过的内容:
我当然可以开始将代码拆分到不同的项目中,但希望尽可能避免代码重复...以便命名空间成为:
<UIObject>MyCompany.MyProject.v1.0.0.0.MyControlName</UIObject>
有什么建议吗?