能否反向别名化C#命名空间?

7

我不确定如何表达这个问题,但是下面是问题描述:

我设计了一个命名空间:my.foo.bar

在我的一个类中,我错误地命名了这个命名空间:my.foo.Bar

我想修复命名空间大小写问题,让每个人都在同一个页面上,但这是一个共享库,我不能承担重新编译所有使用此库的程序的成本。

那么,是否有一种方法可以创建一个机制,将my.foo.Bar重定向到my.foo.bar


使用VB.NET访问您的库——它是不区分大小写的。;-)(好的,只是开玩笑) - Heinzi
2个回答

7
并非全局。您可以使用命名空间别名,但仅限于客户端代码。听起来你可能需要进行重大更改。
如果只有一个或两个类,则一种方法是将它们从my.foo.Bar复制到my.foo.bar,使用过时的属性放弃不良命名空间中的类,并逐步将客户端迁移到正确的类。
如果该类是无状态的,则my.foo.Bar命名空间中的类可以委托给my.foo.bar命名空间中的类,如@JohnSaunders所建议的那样,但前提是客户端对该类的使用不排除委托(一切都是方法或属性,该类的类型不是通过反射使用的等)。

在这种情况下,这是一个小类,有4个属性和3个重载构造函数。 - IronicMuffin

6

最好的做法是将所有位于命名不规范的命名空间中的类型,创建对应的版本并放置到正确的命名空间中。这些新版本可以委托给原本在错误命名空间中的版本。


1
也许可以使用 using myBar = my.foo.Bar。"不可修改的共享库"这个限制极大地限制了我们的选择。 - Steve
@John 我该怎么做?从命名不规范的命名空间中继承类吗?这样够好吗? - IronicMuffin
我使用ReSharper,所以我只需告诉它创建委托成员即可。 - John Saunders

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接