【问题标题】:Using a part of a class in multiple projects在多个项目中使用类的一部分
【发布时间】:2010-04-23 06:49:43
【问题描述】:

我有一组方法可以通过 SQL 连接执行一些实用程序工作,直到现在这些方法已经从一个项目复制到另一个项目。但随着时间的推移,项目数量越来越多,我需要让这些方法保持同步,以防我发现错误或需要更新它。

我已经设法让它的状态是 SQL 访问类是一个 部分 类,一部分是特定于项目的,并且包含特定数据库的包装器。第二部分是通用部分,包含所有项目特定数据库中使用的方法。

问题是现在我将“实用程序”类复制到 8 个项目中,具有相同的内容,但在不同的命名空间中。在 C/C++ 中它会很简单,因为我只需在需要的地方 #included 文件的内容。我应该在 C# 中做什么?

【问题讨论】:

  • 问题:为什么不从类中创建一个实用程序库,所有项目都链接到它?如果您需要特定于项目的实现,那么您可以在您的实用程序库中提供用于自定义的方法/挂钩(如可覆盖的方法) - 从您的项目中的此类继承并实现/覆盖这些方法?

标签: c# refactoring partial-classes


【解决方案1】:

分离出类,这样你就可以在一个公共项目中拥有一个包含所有公共代码的完整类。使用通用接口来表示特定于项目的功能位,在每个项目中实现该接口,并在必要时将接口实例传递给通用代​​码。

【讨论】:

  • 谢谢,我不知道为什么我没有想到以这种方式分开它:-)
【解决方案2】:

正如 Jon 所说,库程序集是个好主意。

在某些情况下,程序集引用不能满足要求,因此,如果不能选择创建库程序集,则可以使用 Visual Studio 中容易忽略的功能,adding an existing file as a link

这将允许您在所有项目中都可用的文件中维护分部类的公共部分。

唯一的限制是使用相对路径来引用文件。

我遇到的唯一问题是开源 Mercurial scc 提供程序。从项目中删除链接文件时,会删除基础文件。很烦人,但这对你来说可能不是问题。

更新:VS Mercurial SCC 中的链接文件错误应该在下一个版本中修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-08
    • 2022-01-23
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多