具有多个公共别名的类库

时间:2010-02-23 16:18:02

标签: c#

我正在寻找有关如何以最有效的方式做到这一点的一些想法。

我正在用一个用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. 使用一些从我的新全包类派生的空公共类声明。
  3. 还有其他方法更有效吗?

2 个答案:

答案 0 :(得分:1)

我想从你的大师班继承是更好的方法。这将使您不必浏览所有引用并冒着在这里和那里犯错的风险,并确保您的更改对您的应用程序是透明的。我认为这足够有效! =)

答案 1 :(得分:1)

C#中的“using x = int”有效地用于告诉编译器对“of x”的所有声明进行查找和替换,并将其替换为“of int”,如Eric Lippert {{3最近(他的博客,answered on another question非常值得添加到您的阅读列表中!)。

到目前为止,最简单的选择是只拥有你继承的Foo1和Foo2类,并对每个类进行评论,解释为什么你已经完成了你所做的事情(所以当你离开时支持代码的人,如果它没有改变那么!),我会说这是一项工作:)