C#默认范围分辨率

时间:2008-10-06 13:16:44

标签: c# linker alias scope-resolution name-clash

我继承了一个c#类'Button'(我无法改变),它与BCL类'Windows.Forms.Button'冲突。通常,我很乐意去:

MyPackage.MyClass.Button;

但是这个类有很多或者引用,这是一个很难重新输入的问题。

有没有办法让编译器(链接器?)默认使用BCL版本的Button自定义版本?

5 个答案:

答案 0 :(得分:21)

将其添加到文件顶部:

using MyButton = MyPackage.MyClass.Button;

现在,您可以使用不同的名称来引用自定义按钮。如果您在同一个文件中的任何位置使用它,则可能需要对库存按钮执行类似的操作。

答案 1 :(得分:4)

如果您想在默认情况下使用它,请替换

using Windows.Forms;

using MyPackage.MyClass;

如果你这样做,你需要完全限定Windows.Forms中的所有按钮。

或者,如果您愿意,可以为命名空间添加别名

using My = MyPackage.MyClass;
//... then
My.Button b = ...

或别名按钮

using MyButton = MyPackage.MyClass.Button;

答案 2 :(得分:2)

您可以从代码顶部删除using Windows.Forms;。这当然意味着您必须专门引用所有Windows.Forms项目。

答案 3 :(得分:0)

使用“使用”,你至少可以减少痛苦/冗长:

using MPMC = MyPackage.MyClass;
然后你可以说:

MPMC.Button

答案 4 :(得分:0)

看来我可以做到以下几点:

using Button = MyPackage.MyClass.Button;

工作,它将代码中的所有引用保留为Button。虽然我试图不要走这条路,因为它仍然是模糊的(至少对于读者来说)正在使用哪个Button。