【问题标题】:Partial Method Inside Abstract Class (C#)抽象类中的分部方法 (C#)
【发布时间】:2010-10-19 18:31:27
【问题描述】:

我正在创建一个可以在 LINQ to SQL 类的部分类中继承的抽象类。 LINQ to SQL 类包含一堆内置的分部方法。有没有一种方法可以实现抽象类中的一个或多个部分方法?我知道部分方法只能包含在部分类或结构中。我相信肯定有其他方法可以做到这一点。

这里有更多细节:

  • 我可能有一个名为 News 的数据库表。如果我创建一个包含此表的 LINQ to SQL dbml 文件,自动生成的代码会为 News 生成一个部分类。
  • 这个分部类包含几个分部方法。
  • 我正在构建一个类,其中包含我想在我的所有 LINQ to SQL 类中使用的几种方法。
  • 这些方法之一是添加到每个 LINQ to SQL 类的部分方法。我有一个共同的身体可用于这种方法。与其将这个方法添加到每个部分类中,我正在寻找一种方法来创建它一次并使用我的基类继承来继承它。

希望这有助于解释更多。

【问题讨论】:

    标签: linq-to-sql inheritance abstract-class implementation partial-classes


    【解决方案1】:

    我想我明白你想做什么,但如果不明白,请告诉我。您可以使您的抽象基类部分化并将您想要的实现拉到该类中。或者,您可以使用抽象类并封装您希望子类可以访问的功能。

    【讨论】:

      【解决方案2】:

      部分方法不能通过继承使用。您可以将常规方法添加到抽象基类,但它们不会自动与部分方法声明“配对”。所以不行。当然,您可以简单地将部分方法实现调用到基类中。

      另请注意,如果通用代码与审计(谁/何时)相关,您也可以通过覆盖DataContextSubmitChanges 方法并调用GetChangeSet 来做到这一点:

          public override void SubmitChanges(ConflictMode failureMode)
          {
              ChangeSet delta = GetChangeSet();
              //... use delta.Updates, delta.Inserts and delta.Deletes
              base.SubmitChanges(failureMode);
          }
      

      最后,请注意,您还可以为 dbml (like so) 中的所有实体指定一个公共基类;您不必在每个部分类中手动完成。

      【讨论】:

        猜你喜欢
        • 2016-11-08
        • 2012-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-16
        • 2012-09-21
        • 2011-02-25
        相关资源
        最近更新 更多