在C#项目中管理具有相同命名空间的多个DLL

时间:2014-07-03 16:18:28

标签: c# .net visual-studio-2010 dll namespaces

语言: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中的版本轻松实例化不同的对象?

到目前为止我看过的内容:

  1. 使用GAC - 似乎无法正常工作
  2. 为两个DLL创建一个“extern别名” - 但我无法弄清楚如何将这个用于反射
  3. 引用VS中的两个DLL - 显然不会因为名称空间冲突而无法工作 - 引发模糊引用
  4. 我当然可以开始将代码拆分到不同的项目中,但希望尽可能避免代码重复...以便命名空间成为:

    <UIObject>MyCompany.MyProject.v1.0.0.0.MyControlName</UIObject>
    

    有什么建议吗?

0 个答案:

没有答案