抽象クラス内の部分メソッド (C#)
-
09-09-2019 - |
質問
LINQ to SQL クラスの部分クラスで継承できる抽象クラスを作成しています。LINQ to SQL クラスには、多数の組み込み部分メソッドが含まれています。抽象クラスに 1 つ以上の部分メソッドを実装する方法はありますか?部分メソッドは部分クラスまたは構造体内にのみ含めることができることはわかっています。きっと別の方法があるはずです。
詳細は次のとおりです。
- News という名前のデータベース テーブルがあるとします。このテーブルを含む LINQ to SQL dbml ファイルを作成すると、自動生成コードによってニュースの部分クラスが生成されます。
- この部分クラスには、いくつかの部分メソッドが含まれています。
- すべての LINQ to SQL クラスで使用したいいくつかのメソッドを含むクラスを構築しています。
- これらのメソッドの 1 つは、各 LINQ to SQL クラスに追加される部分メソッドです。この方法に使用する共通のボディがあります。このメソッドを各部分クラスに追加するのではなく、一度作成して基本クラスの継承で継承する方法を探しています。
詳しい説明に役立つことを願っています。
解決
部分的な方法は、継承を介して使用できません。あなたは抽象基底クラスへの定期的なメソッドを追加することもできますが、彼らは、部分的なメソッドの宣言と、自動的に「ペア」ではないでしょう。だから、:いいえ。あなたは、もちろん、単にベースクラスに部分メソッドの実装の呼び出しを持つことができます。
:一般的なコードは、監査(/時)のようなものに関連している場合、あなたはまたDataContext
のSubmitChanges
メソッドをオーバーライドすることによってこれを行うことができ、かつGetChangeSet
を呼び出すことをにも注意
public override void SubmitChanges(ConflictMode failureMode)
{
ChangeSet delta = GetChangeSet();
//... use delta.Updates, delta.Inserts and delta.Deletes
base.SubmitChanges(failureMode);
}
最後に、あなたも(DBMLにすべてのエンティティの共通の基本クラスを指定することができることに注意してください<のhref = "https://stackoverflow.com/questions/411515/way-to-automatically-add-a -linqtosqlベース・クラス・ツー・エンティティ/ 411903#411903" >そうのように)。あなたは、各部分クラスに手でそれを行う必要はありません。
他のヒント
私は私はあなたが何をしたいのかを理解すると思うが、いない場合、私に知らせてください。あなたは抽象基底クラスは、部分的にし、あなたがそのクラスにアップしたいの実装を引くことができます。また、あなたは抽象クラスを取ると、あなたの子クラスはへのアクセスを許可する機能をカプセル化できます。
所属していません StackOverflow