2011-02-02 68 views
3

我的一个班级的名称已更改,我无法将其更改回来。我必须保持向后兼容性,我不想用旧名称来编写包装。 有没有简单的方法给一个2类名字或给它一个别名?是否有可能为.NET中的类定义别名?

由OP从解禁评论:

不要告诉我使用using指令,因为它必须在消费端进行的,我不想改变是项目使用我的图书馆。

+0

不要告诉我使用`using`指令,因为它必须在客户端完成,而且我不想更改正在使用我的库的项目。 – 2011-02-02 19:04:15

回答

6

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

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

否则,单一的.cs源文件中就可以申请using语句:

using OldClassName = SomeNameSpace.NewClassName 

然而,这并不解决全球问题,因为它可能成为痛苦的改变许多的.cs文件包括这个使用语句。

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

public class OldClassName : NewClassName 

这给你走样了新的类,但会要求你创建重复公众构造函数和对重命名类型的代理静态方法调用。这远非理想......我一般不会推荐这个。

+0

看起来这条评论在你的回答后31秒发布:“不要告诉我使用'using`指令,因为它必须在消费者一方完成,我不想改变正在使用我的项目图书馆。” – jason 2011-02-02 19:05:08

0

不幸的是,作为图书馆作者,唯一的办法是X继承Y,它有一定的注意事项。

这是可能的,但不太可能你可以作弊与IL大会。

相关问题