如何处理对具有相同导出的程序集的两个引用?

时间:2013-01-21 16:42:09

标签: c# unit-testing datacontractserializer

我刚学会了通过DataContract支持序列化中的往返。我确信我会用这种机制犯错,我想在Visual Studio中建立一个单元测试来测试我的文件的新版本是否正常。

为了达到这个目的,我想

  1. 在单元测试中创建最新版本的文档对象
  2. 然后将此对象序列化为MemoryStream
  3. 使用旧版本的应用程序反序列化此对象
  4. 将此旧对象序列化为MemoryStream
  5. 使用当前版本
  6. 反序列化此对象
  7. 检查第一个对象和最后一个对象的属性是否相同
  8. 这听起来很简单(或者可能不是?),我现在的问题是单元测试需要同时引用我的应用程序的当前版本和我的应用程序的旧版本。

    因此,如果我现在尝试创建此对象,则会收到一条错误消息,指出此类型是在两个程序集中定义的。

    所以我的问题是,如何处理对具有相同导出的程序集的两个引用。

    我可以做点什么吗

    OldAssembly.MyClass old;
    CurrentAssembly.MyClass new;
    

1 个答案:

答案 0 :(得分:1)

  > how can I handle two references to assemblies that have the same exports.

您可以为每个引用的程序集声明extern alias。此别名通常为global,但您可以将自己声明为编译器的命令行参数,也可以在ReferencedAssemlys / {MyAssemly} / Properties / Aliase下的visual studio中声明。

在你的程序中你可以使用

old::My.NameSpace.MyClass old;
global::My.NameSpace.MyClass new;