.NET单个类的多个命名空间

是否可以让一个类驻留在两个名称空间内,我该怎么做?

澄清一下:我们有一个类库(比如root命名空间是classLib1),它随着时间的推移而增长(更多的类),我想在逻辑上将类分组到不同的命名空间。 但是,某些较旧的类需要分组到这些新的命名空间(例如classLib1.section1),这样做会破坏使用此类库的其他程序集中的遗留代码。 所以我希望能够使用两个名称空间来引用一个类,直到我们可以逐步淘汰旧的类。

我找不到任何关于此的信息,这表明人们不想这样做的原因!?!

不,没有办法给单个类两个名称(名称空间实际上只是类名的一部分)。

作为一种变通方法,您可以将类移动到新位置,并在旧位置(Facade Pattern)周围创建薄包装器。 当然,更好的解决方案是移动类并相应地修复遗留代码。

作为一种解决方法,您可以在需要时将该类“使用”到第二个命名空间中:

namespace classLib1.section2 { public myBigClass { 

并且在旧命名空间中使用它的每个文件中,您都可以添加一行

 namespace classLib1.section1 { using myBigClass = classLib1.section2.myBigClass; 

作为临时补丁,直到你正确修复它。

类型转发是在.net 2.0中引入的,这意味着您可以使用TypeForwardedToAttribute属性来指示现在可以在AssemblyY中找到最初存在于AssemblyX中的类型。

我很确定这只是适用/适用的,如果你分成多个组件,但即使没有,也值得知道。