我的 C# 项目引用了两个第三方 DLL。这很重要,因为这意味着我无法访问源代码,也无法修改或重新编译这两个 DLL。
我们称它们为 dll A 和 dll B。这是 dll A 的样子:
namespace ThirdParty.Foo
{
public class Bar
{
...snip...
}
public class Something
{
public Bar MyProperty { get; set; }
}
}
这是 dll B 的样子:
namespace ThirdParty.Foo
{
public class Bar
{
...snip...
}
public class SomethingElse
{
public Bar MyProperty { get; set; }
}
}
如您所见,它们具有相同的命名空间,并且它们都定义了一个具有相同名称的类。我的 C# 代码需要引用这两个 DLL。我使用引用上的别名属性来区分这两个引用,并且我还在extern alias firstDll
我 extern alias secondDll
的 C# 文件的顶部。到目前为止,一切都很好。
对我来说很明显的类型Something.MyProperty
是 firstDll.ThirdParty.Foo.Bar 和类型SomethingElse.MyProperty
是 secondDll.ThirdParty.Foo.Bar 但由于某种原因,Visual Studio 感到困惑并将两个属性的类型解析为同一个Bar
类第一个DLL。
有没有办法让我“强制”VisualStudio 解析正确的类型?
编辑:我在 Visual Studio 中遇到的错误是:无法将类型 'ThirdParty.Foo.Bar [d:\MySolution\References\Second.dll]' 隐式转换为 'ThirpParty.Foo.Bar [d:\MySolution\References \First.dll]'