1

LINQ to SQL クラスの部分クラスで継承できる抽象クラスを作成しています。LINQ to SQL クラスには、組み込みの部分メソッドが多数含まれています。抽象クラスに 1 つ以上の部分メソッドを実装する方法はありますか? 部分メソッドは部分クラスまたは構造体にのみ含めることができることを知っています。きっと何か別の方法があるに違いない。

詳細は次のとおりです。

  • News というデータベース テーブルがあるとします。このテーブルを含む LINQ to SQL dbml ファイルを作成すると、自動生成されたコードによって News の部分クラスが生成されます。
  • この部分クラスには、いくつかの部分メソッドが含まれています。
  • すべての LINQ to SQL クラスで使用したいいくつかのメソッドを含む、作成中のクラスがあります。
  • これらのメソッドの 1 つは、各 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 内のすべてのエンティティに共通の基本クラスを指定することもできることに注意してください ( so のように)。各部分クラスで手動で行う必要はありません。

于 2009-04-16T03:50:07.890 に答える
0

あなたのやりたいことは理解できたと思いますが、そうでない場合はお知らせください。抽象基本クラスを部分的に作成し、必要な実装をそのクラスにプルできます。または、抽象クラスを取得して、子クラスにアクセスさせたい機能をカプセル化することもできます。

于 2009-04-16T03:49:55.397 に答える