IDataRecord を T のインスタンスに変換する Func デリゲートを保持するように設計された単一の抽象メソッドを持つ EntityTypeTransform という抽象クラスがあります。
public abstract class EntityTypeTransform<TEntityType> where TEntityType : class
{
public abstract Func<IDataRecord, TEntityType> GetDataTransform();
}
そのクラスの実装は次のようになります (実際にはそうです):
public class TaskParameterEntityTypeTransform : EntityTypeTransform<TaskParameter>
{
public override Func<IDataRecord, TaskParameter> GetDataTransform()
{
return dataRecord => new TaskParameter()
{
TaskId = (int)dataRecord["task_id"],
Name = (string)dataRecord["p_name"],
Value = (string)dataRecord["p_value"]
};
}
}
ここで、これらの各クラスのインスタンスを、次のような一般的な Dictionary に保持したいと考えています。
Dictionary<Type, EntityTypeTransform<T>>
しかし、(たとえば) EntityTypeTransform Of Task のインスタンスは EntityTypeTransform Of TaskParameter のインスタンスと同じではないため、これは機能しません。
誰でも私を助けることができますか?
編集: Type キー = typeof(T) を追加する必要があります