代码之家  ›  专栏  ›  技术社区  ›  Frank Hale

一个类具有多个公共别名的类库

c#
  •  2
  • Frank Hale  · 技术社区  · 15 年前

    我正在寻找一些关于如何以最有效的方式完成这项工作的想法。

    我正在用一个用C编写的.NET库替换大型传统ASP网站中使用的旧COM库。旧图书馆只有两个班。我只在新库中的一个类中重写了这个功能。

    旧代码在几十页中多次引用这两个类。我一直在通过公开一些空类来解决这个名称问题,这些空类是从我的单个主类派生的,它可以很好地执行前面的类和所有类的功能:

    public class Foo1 : Bar {}
    public class Foo2 : Bar {}
    

    bar是执行所有功能的主类,两个空类是引用此功能的ASP页中使用的名称。声明这些空类的效率似乎很低,但它工作得很好,并且可以减少对现有遗留ASP代码的接触。

    理想情况下,我想在我的图书馆里做这样的事情:

    public using Foo1 = Bar;
    public using Foo2 = Bar;
    

    显然这不起作用,但我觉得它最能说明我想做什么。我希望我的类有两个公共别名,可以在其命名空间之外引用它们。

    我已经做了相当多的挖掘工作,我还没有找到一种方法可以让我做到这一点。

    不过,我有几个不同的解决方案。

    1. 重命名ASP代码中的所有现有类引用,使其与我的新类保持一致。
    2. 使用一些从新的全包类派生的空公共类声明。

    还有其他更有效的方法吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Will Marcouiller    15 年前

    我想继承你的硕士班是更好的方法。这将使您不必浏览所有引用,并冒着在这里或那里犯一些错误的风险,并确保您的更改对您的应用程序是透明的。我觉得这足够有效了!=)

        2
  •  1
  •   Community CDub    8 年前

    C中的“using x=int”有效地用于告诉编译器对“of x”的所有声明执行查找和替换,并用“of int”替换它们,如Eric Lippert answered on another question 最近(他的博客, http://blogs.msdn.com/ericlippert/ 很值得添加到您的阅读列表中!).

    到目前为止,最简单的选择是让继承的foo1和foo2类,每个类上都有一个注释,解释为什么你做了你所做的(所以当你离开时支持代码的人,如果那时没有改变的话!)我会说这是一项工作完成了:)