簡體   English   中英

為什么不能為名稱空間聲明using語句,但是可以在類型之前直接聲明名稱空間?

[英]Why can't I declare a using statement for a namespace, but can directly declare the namespace before the type?

我想知道是否有人以前見過這種情況,或者對可能導致這種情況的任何建議。 我有一個名為Dashboard的自定義類,該類存在於名為Dashboard.Data.Client的項目中。 在同一項目中,如果我嘗試引用該類的名稱空間,例如:

using Alliance.Dashboard.Data.Client.Models;

那么我不能使用Dashboard類型。 但是,在需要使用Dashboard任何地方,我都可以鍵入完全限定的名稱,並且可以正常使用。 例:

Alliance.Dashboard.Data.Client.Models.Dashboard myDashboard = new Alliance.Dashboard.Data.Client.Models.Dashboard();

我確信您會想知道一些注意事項:

  1. 如果我只是在課堂上鍵入Dashboard ,然后嘗試解決它,則該選項不可用。

  2. 如果存在沖突的命名空間,我以前已經看到過此問題。 在這種情況下,必須提供完全限定的名稱。 這里情況不同。 沒有沖突的名稱空間。

  3. 在本項目中,其他類也可以很好地解決。 實際上,這是一個場景:從IDashboardRepository開始,正如我所描述的,嘗試聲明Dashboard存在此問題。 IDashboardRepository位於同一項目中,但位於不同的命名空間中: Alliance.Dashboard.Data.Client.Interfaces 但是,反向工作正常。 換句話說,我可以在Dashboard中將接口名稱空間用作using語句,但在沒有完全限定名稱的接口中,不能將Dashboard用作接口。

作為參考,這是我的Dashboard類的代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Alliance.Dashboard.Data.Client.Models
{
    public class Dashboard
    {
        public System.Guid DashboardID { get; set; }

        public string DashboardName { get; set; }

        public byte[] Instance { get; set; }

        public bool IsDeleted { get; set; }

        public byte[] Concurrency { get; set; }
    }
}

好吧,我對此感到非常愚蠢。 簡而言之,名稱空間和類名稱相同。 編譯器認為我已經輸入了名稱空間目錄的開頭,而不是類名。 再次感謝您抽出寶貴時間來幫助另一個轉向節。

暫無
暫無

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

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