我刚刚了解了如何通过 DataContract 支持序列化中的往返。因为我确定我会在这个机制上出错,所以我想在 Visual Studio 中建立一个单元测试来测试我的文件的新版本是否正常。
为了实现这个目标,我想
- 在单元测试中创建最新版本的文档对象
- 然后将这个对象序列化为一个MemoryStream
- 使用旧版本的应用程序反序列化此对象
- 将这个旧对象序列化到 MemoryStream
- 用当前版本反序列化这个对象
- 检查第一个对象和最后一个对象的属性是否相同
这听起来很简单(或许不简单?),我现在的问题是单元测试需要同时引用我的应用程序的当前版本和旧版本。
因此,如果我现在尝试创建此对象,我会收到一条错误消息,指出此类型是在两个程序集中定义的。
所以我的问题是,如何处理对具有相同导出的程序集的两个引用。
我可以做类似的事情吗
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/