微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C#:当两个命名空间相似时,尝试解决类的问题

我遇到一个问题,我不能在不同的命名空间中引用一个类.我有两个班:
namespace Foo
{
    public class Class1 { ... }
}

namespace My.App.Foo
{
    public class Class2
    {
        public void SomeMethod()
        {
            var x = new Foo.Class1; // compile error!
        }
    }
}

编译错误是:

The type or namespace name ‘Class1’
does not exist in the namespace
‘My.App.Foo’

在这种情况下,我似乎无法让Visual Studio认识到“Foo.Class1”是指第一类.如果我将鼠标悬停在“Foo”上,则表明它试图将其解析为“My.App.Foo.Class1”

如果我把行:

using Foo;

在包含Class2的.cs文件的顶部,它也解析为“My.App.Foo”.

引用正确的“Foo”命名空间是否有一些技巧,而不必重命名名称空间,以便它们不冲突?这两个命名空间都在同一个程序集中.

解决方法

您可以使用global ::全局限定命名空间:global :: Foo.Class1应该可以工作.

您也可以将全局:: Foo别名,使事情变得更容易.在您的源文件的顶部,在您的using语句下,添加

using AliasClass1=global::Foo.Class1;

现在你可以使用:

AliasClass1 c = new AliasClass1();
// and so on.

当然,你可以使用比AliasClass更好的名字:-)

原文地址:https://www.jb51.cc/csharp/95358.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐