我今天遇到了一个奇怪的现象,因为我将项目的引用添加到另一个项目并尝试使用引用程序集的接口:
情况:
MySampleApplication
位于项目MyApplication
。IMySampleApplication
位于引用的项目MyApplication.Interfaces
中。当我这样做时:
public class MySampleApplication : IMySampleApplication
Resharper使用以下内容添加以下内容:
using global::MyApplication.Interfaces;
问题:
为什么要添加
global::
前缀,我该如何避免这种情况?
提前致谢
答案 0 :(得分:7)
您的代码中某处会出现两次@register.simple_tag()
def dropbox_files():
files = function_from_other_question()
s = '<ul>'
for key, value in recurse(files):
s += '<li>{}</li>'.format(key)
s += '</ul>'
return s
,例如,您可能在本地项目中有一个名为MyApplication
的类以及MyApplication中的名称空间项目。
本地MyApplication
将优先于MyApplication项目中的命名空间,因此将找不到MyApplication
。为了解决这个问题,可以使用特殊别名MyApplication.Interfaces
告诉编译器在这种情况下global::
引用基本命名空间,然后可以正确识别MyApplication
。
至于如何避免它,这很容易说,但可能更难实现:重命名其中一个以删除名称冲突......
答案 1 :(得分:2)
您的项目中可能还有另一个名为MyApplication的实体,它隐藏了命名空间。
请参阅:"How to: Use the Global Namespace Alias (C# Programming Guide)"