【问题标题】:Class library with multiple public aliases for a class具有多个公共别名的类库
【发布时间】:2010-02-24 00:40:08
【问题描述】:

我正在寻找有关如何以最有效的方式执行此操作的一些想法。

我正在用一个用 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. 使用一些从我的新全包类派生的空公共类声明。

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

【问题讨论】:

  • +1:关于开始将遗留应用程序迁移到新技术的好问题。

标签: c#


【解决方案1】:

我想从你的大师班继承是更好的方法。这将使您不必遍历所有参考资料并冒着在这里和那里犯一些错误的风险,并确保您的更改对您的应用程序是透明的。我认为这已经足够有效了! =)

【讨论】:

  • @Frank Hale:感谢您接受我的回答作为您问题的解决方案! =)
  • 没问题,感谢您花时间阅读我的疯狂问题。哈哈!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-18
    • 2021-10-19
    • 1970-01-01
    • 2023-03-29
    • 2014-06-18
    • 2011-02-13
    • 1970-01-01
    • 2010-12-16
    相关资源
    最近更新 更多