C#中调用嵌套命名空间内的类方法失败,求解决方案
问题原因及解决方案
你的问题出在命名空间的嵌套结构上:NameSpace2是NameSpace1的子命名空间,并非与NameSpace1同级的ConsoleApp1直接子命名空间。因此在ConsoleApp1.Program中直接引用NameSpace2,编译器无法定位到该命名空间。
解决方法
方法1:使用完整嵌套命名路径调用
修改Main方法中的调用代码,通过父命名空间定位到NameSpace2:
static void Main(string[] args) { int sum1 = NameSpace1.MyClass.add(1, 2); // 修正为完整的嵌套命名空间路径 int sum2 = NameSpace1.NameSpace2.MyClass.add(1, 2, 3); }
方法2:添加using指令引入子命名空间
在Program文件的using区域添加子命名空间的引用,后续可直接调用:
// 在现有using后添加 using ConsoleApp1.NameSpace1.NameSpace2; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { int sum1 = NameSpace1.MyClass.add(1, 2); // 直接调用,注意若两个MyClass存在命名冲突,需指定命名空间 int sum2 = MyClass.add(1, 2, 3); } } }
方法3:使用命名空间别名简化调用
如果担心命名冲突,可以给子命名空间设置别名:
// 在现有using后添加别名 using NS2 = ConsoleApp1.NameSpace1.NameSpace2; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { int sum1 = NameSpace1.MyClass.add(1, 2); // 通过别名调用 int sum2 = NS2.MyClass.add(1, 2, 3); } } }
内容的提问来源于stack exchange,提问作者Brandon Rogers
相关产品推荐
相关产品推荐

