2011-05-25 35 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,则不能使类内部。

相关问题