簡體   English   中英

Visual Basic和命名空間問題

[英]Visual Basic and a Namespace Issue

我正在清理Visual Basic(.NET 2.0)解決方案。 將其分為兩個項目。 150個類的文件頂部具有命名空間RebateCalculator。 這些文件現在位於具有默認名稱空間RebateCalculator的Project中。 如果我要插入一個Class1.cs文件,然后再聲明我的所有其他文件都具有的名稱空間,則完全合格的類名稱將為RebateCalculator.RebateCalculator.Class1

有什么我可以貼在命名空間聲明的前面來使其絕對的嗎? 而不是重復自己? 我寧願找到這種解決方案,也不想刪除名稱空間聲明(以防文件再次移動)

最終目標:能夠在“名稱空間RebateCalculator”上進行搜索/替換,以解決150個文件中的問題。

我不知道這是否能回答您的問題,但以防萬一。

打開項目屬性,然后單擊應用程序屬性。 在此處清除根命名空間。 然后,每個文件中的命名空間聲明將為“絕對”。

順便說一句...這很可能破壞您的應用程序,並且可能需要一段時間才能修復所有問題。 在開始之前,請確保備份(或至少要提交給您的倉庫)。

作為旁白。 我認為將項目根命名空間與聲明的命名空間結合使用會造成混淆。 我通常會做一個或另一個。

賽斯

您發布的重復答案暗示了該問題。

VB.Net具有“根命名空間”的概念。 當您在代碼文件中添加Namespace語句時,給定的名稱與根名稱空間結合在一起以形成完整的名稱空間。

因此,在VB.Net中,如果您的根命名空間是MyRoot,然后創建一個類並用MyNamespace命名空間包圍,則完整的類名稱是MyRoot.MyNamespace.ClassName。 如果不使用Namespace語句,則完整的類名稱為MyRoot.ClassName。 換句話說,根名稱空間設置有助於名稱空間的名稱。

在C#中,情況並非如此。 C#具有“默認名稱空間”。 這只是一個名稱空間定義,在創建新類時會自動將其添加到新類中。 如果刪除名稱空間聲明,則該類沒有名稱空間。 換句話說,默認名稱空間設置實際上並沒有貢獻名稱空間的名稱。

在C#中,名稱空間聲明上的內容均為所使用的名稱空間。 默認名稱空間設置僅確定默認情況下在代碼文件中插入的內容。

將此VB程序的“根名稱空間”設置為“ TestVBConsole”,並且該類中沒有名稱空間語句:

Module Module1
    Sub Main()
        Dim tc As New TestClass

        Console.WriteLine(tc.GetType().FullName)

    End Sub
End Module

和這個班

Public Class TestClass
    Public aField As String = "Default"
End Class

輸出是

TestVBConsole.TestClass

C#輸出中的相同程序

TestClass

關於您的問題,我認為沒有任何方法可以覆蓋該行為。 您只需要記住在C#中,以確保您的命名空間聲明正確。

暫無
暫無

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

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