簡體   English   中英

為什么盡管有“使用”聲明,但仍需要包括我的部分名稱空間?

[英]Why do I need to include part of my namespace despite having a 'using' declaration?

我的解決方案中有一個項目旨在提供一些核心功能。 它的命名空間是MyCompanyName.ProductName.FunctionSet 目前,該項目包括兩個班級。 customer.cscore.cs 核心類是靜態的,並且包含靜態方法EntryPoint()。

我在解決方案中有一個控制台應用程序。 它的命名空間是MyCompanyName.ProductName.TaskMan 我創建了對上面核心項目的引用,並為名稱空間添加了using指令。

Main()中的其中Core.EntryPoint();Core.EntryPoint(); 注意,它不包括名稱空間的任何部分。 代碼運行良好。

現在,為了解決錯誤(無法解決符號'EntryPoint'),我需要將行更改為FunctionSet.Core.EntryPoint(); 我需要添加名稱空間的最后一部分。

為什么需要添加名稱空間的那一部分? 有什么想法為什么突然停止工作? 我可以做些什么來忽略名稱空間部分嗎? 如果我堅持下去,這沒什么大不了的,但是我確實想知道如何以及為什么。

編輯:我保留了下面的大塊頭,但現在不確定是否相關。

我懷疑其中之一是正確的:

  • 您的名稱空間並不完全符合您的想法(特別是對於Core)
  • 您沒有自己認為的using指令

如果您可以發布一個簡短而完整的程序(僅兩個類就足夠了,僅使用命名空間,使用指令,類聲明和方法-不需要任何業務邏輯),那么應該很容易進行整理。


盡管名稱空間相對於當前名稱空間解析的,但名稱空間相對於using指令並沒有解析。 例如:

namespace Outer.Inner
{
    class Foo
    {
        public static void Bar() {}
    }
}

namespace Outer.OtherInner
{
    class Test1        
    {
        static void Method()
        {
            // Resolved to Outer.Inner.Foo.Bar()
            Inner.Foo.Bar();
        }
    }
}

namespace OtherOuter
{
    using Outer;

    class Test2
    {
        static void Main()
        {
            // This is invalid
            Inner.Foo.Bar();
        }
    }
}

有關完整的細節,請參閱C#規范的3.8節。

您是否嘗試過在文件開頭的using語句中添加功能?

using FunctionSet.Core.EntryPoint
EntryPoint();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM