是否可以在.NET中为类定义别名?
我的一个类的名称已更改,我无法将其更改回来。 我必须保持向后兼容性,我不想写一个旧名称的包装器。 有没有简单的方法来给出2类名称或给它一个别名?
OP的评论解除了:
不要告诉我使用using指令,因为它必须在消费者方面完成,我不想更改使用我的库的项目。
可以说,您最好的选择是使用重构工具(如Resharper)来帮助您自动从旧名称到新名称的转换。 但是,如果由于某种原因这对你来说是站不住脚的,可以选择以下几种方法:
如果类型在不同的程序集中,您可以使用类型转发器 。 这些允许您将给定类型的所有引用重定向到程序集……但是如果是IIRC,它们也可以将它们重定向到新名称。
否则,在单个.cs源文件中,您可以应用using语句:
using OldClassName = SomeNameSpace.NewClassName
但是,这并不能解决全局问题,因为更改许多.cs文件以包含此using语句可能会变得很痛苦。
另一种选择,可能是创建新类型的子类并将其命名为旧名称:
public class OldClassName : NewClassName
这为新类提供了别名,但是需要您为重命名的类型创建重复的公共构造函数和代理静态方法调用。 这远非理想……我通常不建议这样做。
不幸的是,作为图书馆作者,唯一的方法是XinheritanceY,这有一定的警告。
这是可能的,但你不可能在IL组装中作弊。