是否可以在.NET中为类定义别名?

时间:2011-02-02 19:02:51

标签: c# .net alias classname

我的某个课程的名称已更改,我无法将其更改回来。我必须保持向后兼容性,我不想写一个旧名称的包装器。 有没有简单的方法来给出2类名称或给它一个别名?

取消OP的评论:

  

不要告诉我使用using指令,因为它必须在消费者方面完成,而且我不想更改使用我的库的项目。

2 个答案:

答案 0 :(得分:6)

可以说,您最好的选择是使用重构工具(如Resharper)来帮助您自动将旧名称转换为新名称。但是,如果对某些人来说这是站不住脚的话原因,这里有一些选择:

如果类型位于不同的程序集中,您可以使用Type Forwarder 。这些允许您将给定类型的所有引用重定向到程序集......但是如果是IIRC,它们也可以将它们重定向到新名称。

否则,在单个.cs源文件中,您可以应用using语句:

using OldClassName = SomeNameSpace.NewClassName

但是,这并不能解决全局问题,因为更改许多.cs文件以包含此using语句可能会很痛苦。

另一种选择,可能是创建新类型的子类并将其命名为旧名称:

public class OldClassName : NewClassName

这为您提供了新类的别名,但是需要您为重命名的类型创建重复的公共构造函数和代理静态方法调用。这远非理想......我通常不建议这样做。

答案 1 :(得分:0)

不幸的是,作为图书馆作者,唯一的方法是X继承Y,这有一定的警告。

有可能但你不可能在IL装配中作弊。