我目前正在制作一个程序,它使用多个.dll作为参考。这一切都运行正常,但昨天我添加了一个新的引用,我得到一个错误我正在使用另一个引用的对象,它说这个对象在两个.dll文件中定义。我尝试删除其他引用,但我需要该引用中的内容,所以我必须以某种方式解决它。我在网上搜索但我没有找到一个好的解决方案,因为似乎没有多少人遇到这个问题!因此,比以往任何时候都需要经验丰富的程序员的帮助,但我当然感谢每一个帮助:)
答案 0 :(得分:1)
在2个不同的程序集中,在同一名称空间中定义相同的类是非常糟糕的做法。你已经找到了原因。这就是说,有一种机制允许消除称为外部别名的引用。
假设您有一个控制台应用程序,该应用程序引用包含相同类Foo.SomeClass
(ClassLibrary1
和ClassLibrary2
)的2个程序集。在要使用该类的项目中,选择程序集引用,并在“属性”窗口中定义别名(除了默认的global
别名):
对第二个程序集引用执行相同操作并使用其他别名。
现在您可以使用您提供给引用的程序集别名来指定您引用的类:
extern alias assembly1;
extern alias assembly2;
using FirstClass = assembly1::Foo.SomeClass;
using SecondClass = assembly2::Foo.SomeClass;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var c1 = new FirstClass();
var c2 = new SecondClass();
}
}
}