我创建了一个外部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
}
}
有什么想法解决这个问题吗?请注意,名称空间不同。
答案 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>
}
}