2011-05-25 20 views
1

我正在寫一個類庫,並遇到需要使內部命名空間。我這樣做是因爲有一些自動生成的代碼來自XSD,以避免衝突。在C#中,是否希望命名空間是內部的任何意義?

但是,是否想要一個名稱空間是內部的任何意義呢?我知道這是不可能的。我讀了這個(Internal Namespace for .Net?),等等。

我問的是,如果你認爲你需要/需要一個內部命名空間,可以在你的架構/設計中改進什麼?爲了擺脫虛假需要有一個內部命名空間,我應該走什麼路線?

+0

爲什麼你想要它是內部的而不是簡單的YAN ......又一個命名空間......? – 2011-05-25 16:54:06

+0

你的假設內部命名空間如何工作?它只是「這個命名空間中的所有類都是內部的」的語法糖嗎?或者它意味着「你不能在任何其他引用這個名字的程序集中聲明這個名字空間的類」? – 2011-05-25 17:09:31

+0

這與僅將該名稱空間中的所有類型設爲內部結構有何區別?你今天可以做到這一點,而不需要引入一些奇怪的新語法。 – 2011-05-25 17:14:00

回答

2

不,名稱空間本身沒有特別的可訪問性。它只是名稱空間(類型,基本上)有可訪問性的成員。只需在命名空間內部創建所有類型。

+0

這就是我現在正在做的事情。事情是我說的代碼是Auto Generated。然後每次我更新它時,我都必須將所有類都更改爲內部。我想這只是它的方式......我想我可以有另一種選擇 – 2011-05-25 19:03:46

+0

@阿德里安:啊,我明白你的意思了。我會考慮寫一個適合你的重寫工具。這是一個恥辱xsd.exe不給你一個生成內部類型的選項:( – 2011-05-25 19:05:49

+0

你打賭。我接受你的答案,因爲「建立你自己的工具」提示。順便說一句,我使用Xsd2Code,我發現是一個整潔的工具http://xsd2code.codeplex.com/ – 2011-05-25 19:08:18

1

使用/namespace:<namespace>屬性,當您從XSD生成類時,使用xsd.exe工具。

XML Schema Definition Tool (Xsd.exe)

/n[amespace]:namespace - 指定生成的類型運行時的命名空間。

如果您有一個基於XSD生成的類型化數據集,則可以在DataSet屬性中更改Customer Tool Namepsace。另外,如果你的代碼沒有綁定到自動生成的數據集和設計工具,你可以手動改變名稱空間,當然如果你不需要經常重新生成類。

如果您需要經常生成類,請創建一個bat(cmd)文件,該文件將運行帶有所需命名空間和類名稱的xsd.exe。

另外,如果使用XmlSerializer序列化/反序列化XML,則不能使類內部。

相關問題