1

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

这里有更多细节:

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

希望这有助于解释更多。

4

2 回答 2

1

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

另请注意,如果公共代码涉及诸如审计(谁/何时)之类的东西,您也可以通过覆盖DataContext'SubmitChanges方法并调用来做到这一点GetChangeSet

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

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

于 2009-04-16T03:50:07.890 回答
0

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

于 2009-04-16T03:49:55.397 回答