具有相同类名的Dll

时间:2016-04-18 15:41:46

标签: c# dll

我创建了一个外部dll,其类名为:User。我在另一个程序中导入它,它具有相同的类名User。现在,如果我输入:User.来访问dll方法,那么intellisense会向我显示我自己程序的类User的方法。一个练习的例子:

[DLL]:

public class User{
  ... some method ...
}

[实施dll的程序]

using User;

public class User{

      public void getUsers(){
            User. //can't access to dll method
      }
}

有什么想法解决这个问题吗?请注意,名称空间不同。

3 个答案:

答案 0 :(得分:3)

很难从您的示例中看出,但看起来您想要的是 extern别名指令。你可以在这里阅读一篇简短的教程:

https://blogs.msdn.microsoft.com/ansonh/2006/09/27/extern-alias-walkthrough/

命令行表单的文档在这里:

https://msdn.microsoft.com/en-us/library/ms173212.aspx

假设您的DLL程序集是Foo.DLL。那么你要做的是,首先为引用的Foo.DLL添加一个别名,调用别名" Foo"。其次,在命名空间指令中添加一个指令:

extern alias Foo;

然后在你的程序中你可以说Foo::User,编译器会知道你的意思是来自User的{​​{1}},而不是当前编译中的Foo.DLL

答案 1 :(得分:2)

使用DLL的完整命名空间来调用User类。像这样:

YourClassLibrary1.User user = new YourClassLibrary1.User();
user.getUsers();

或者使用这样的别名:

using DLLUser = ClassLibrary1.User;

然后:

DLLUser user = new DLLUser();
user.getUsers();

答案 2 :(得分:2)

您还可以在代码中使用别名:

using MyUser = User;

public class User{

      public void getUsers(){
            MyUser.User.<any property or public method>
      }
}