ジェネリックタイプのパラメータに関する質問があります。一般的なパラメータタイプ
のは、私は私のドメインモデルに以下の定義があるとしましょう:
abstract class Entity<TId>
{
public TId Id { get; private set; }
/* ... */
}
class Person : Entity<long>
{
public string Name { get; set; }
/* ... */
}
は、今度は私が人の詳細を表示する方法を作成したいとしましょう:
public void Details(long? id)
{
if (!id.HasValue) {
Error(...);
return;
}
var person = PersonRepository.Get(id.Value);
ShowPersonDetail(person);
}
だが、さらに行こうとPersonRepositoryは、リポジトリの特殊化であるため、その正しい取得型ID引数(i)を受け入れるために、「Get」メソッドが「自動的に」実装されるようにします。この場合、long
引数)。
今度は私が人のIdsはGUIDがなければならないことを決定し、一日にしましょう。私が望むのは、Personクラスでのみこれを変更できることです。自動的に変更されます。私がそうした場合、私は今、PersonRepository.Get()メソッドを編集する必要はありませんが、私のDetails()メソッドを変更する必要があります。
私のようなものを探していた:これは何も変更する可能性がある場合ああ、ところで、この「詳細」方法は、別のアセンブリに配置されます
Details(Person.IdType id) { /*...*/ }
...
が、強く型付き型または参照型のいずれかを受け入れる必要があります。
アイデア?
ありがとうございます!
正確にはそうではありませんが、リポジトリの部分は機能しません。問題は、私のドメインモデルの範囲外の他の方法です。私はラムダ式で何かを試みます。ありがとう! –