Windows CE デバイスの ORM に取り組んでいます。プロパティの getter/setter メソッドをデリゲートとしてキャッシュし、最適なパフォーマンスを得るために必要なときに呼び出す必要があります。
次のように定義された 2 つのエンティティがあるとします。
public class Car
{
public string Model { get; set; }
public int HP { get; set; }
}
public class Driver
{
public string Name { get; set; }
public DateTime Birthday { get; set; }
}
各エンティティのプロパティごとに 2 つのデリゲートを保持できる必要があります。そこで、プロパティごとに 2 つのデリゲートを保持する AccessorDelegates クラスを作成します。
public class AccessorDelegates<T>
{
public Action<T, object> Setter;
public Func<T, object> Getter;
public AccessorDelegates(PropertyInfo propertyInfo)
{
MethodInfo getMethod = propertyInfo.GetGetMethod();
MethodInfo setMethod = propertyInfo.GetSetMethod();
Setter = BuildSetter(setMethod, propertyInfo); // These methods are helpers
Getter = BuildGetter(getMethod, propertyInfo); // Can be ignored
}
}
次に、特定のエンティティ タイプの各 AccessorDelegates をリストに追加します。だから私はクラスを定義しました:
public class EntityProperties<T>
{
public List<AccessorDelegates<T>> Properties { get; set; }
}
この例の Car と Driver では、エンティティ タイプごとにこれらの EntityProperties を保持する必要があります。Dictionary<string, EntityProperties<T>>
ここでは、簡単にするために、エンティティ名を表す文字列を作成しました。
public class Repo<T>
{
public Dictionary<string, EntityProperties<T>> EntityPropDict { get; set; }
}
これは、私の問題の解決策を見つけることができない場所です。EntityProperties
エンティティ型ごとに保持したいのですがRepo<T>
、辞書を作成できるようにするには、クラスに型パラメーターを指定する必要があります (型パラメーターEntityProperties<T>
が必要なため)。
型パラメーターなしでのみ作成できるようにする必要がありますRepo
。Dictionary<string, EntityProperties<T>>
Repo クラスに型パラメーターを指定せずに を定義するにはどうすればよいですか?