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

标签 c# unit-testing datacontractserializer

我刚刚了解了如何通过 DataContract 支持序列化中的往返。因为我确定我会在这个机制上出错,所以我想在 Visual Studio 中建立一个单元测试来测试我的文件的新版本是否正常。

为了实现这个目标,我想

  1. 在单元测试中创建最新版本的文档对象
  2. 然后将这个对象序列化为一个MemoryStream
  3. 使用旧版本的应用程序反序列化此对象
  4. 将这个旧对象序列化到 MemoryStream
  5. 用当前版本反序列化这个对象
  6. 检查第一个对象和最后一个对象的属性是否相同

这听起来很简单(或许不简单?),我现在的问题是单元测试需要同时引用我的应用程序的当前版本和旧版本。

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

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

我可以做类似的事情吗

OldAssembly.MyClass old;
CurrentAssembly.MyClass new;

最佳答案

  > 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;

关于c# - 如何处理对具有相同导出的程序集的两个引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14443264/

相关文章:

c# - 无法导入 X509 v3 证书

android - Robolectric 不执行 Runnable

c# - 犀牛模拟中的 AssertWasCalled

c# - DataContractSerializer 遗漏了一个对象

c# - 在 C# 中使用 DataContactSerializer 反序列化时出错

c# - 如何在特定行和列添加复选框?

c# - 无法找到此模式的正则表达式

c# - 以编程方式在 Hierarchy Unity 中导入 Assets

unit-testing - Mockito 使用不同的 Class 参数调用相同的方法

c# - 在 .NET 3.5 中使用 WCF DataContractJsonSerializer