我有一个使用库的程序(包含遗留代码的主应用程序)。遗憾的是,主应用程序和库都使用名为Softwares.SoftwareXSD
的类(具有相同名称和相同属性)。当我使用Softwares.SoftwareXSD
中定义的类时,主程序抱怨模棱两可。但是,Visual Studio表示,通过在类名下显示绿色下划线,可以在复制品中进行选择。我相信这不是一个好方法。
这有什么问题吗?这种情况的最佳解决方法是什么?
问题是XSD中的某些类特定于主应用程序,而某些类特定于库,但这些类使用引用相互链接。
答案 0 :(得分:9)
如果我理解你的问题,你在不同的程序集(主应用程序和库)中有两个类Softwares.SoftwareXSD
,其完全限定的名称是相同的。
要解决此问题,请转到Visual Studio中的解决方案资源管理器,展开“参考”,右键单击对库的引用,然后选择属性。
在“别名”中,用其他别名替换“global”,例如“文库”。
您现在可以按如下方式消除参考的歧义:
global::Softwares.SoftwareXSD // is in the main application
library::Softwares.SoftwareXSD // is in the library
尽管如此,我仍然建议您为班级选择唯一的名称。
答案 1 :(得分:3)
您可以使用库名称空间的别名来消除成员的歧义:
using XSD = Softwares.SoftwareXSD;
然后:
XSD.SomeClass.SomeLibraryCall();
答案 2 :(得分:1)
如果编译器抱怨“明确的引用”,因为你有两个具有相同类名的命名空间,并且你碰巧有两个命名空间的使用语句(在你的情况下)你可以逃脱
global
关键字。
ex:using LegacySoftwareXSD = global::LegacySoftwares.Softwares.SoftwareXSD;