У меня есть абстрактный класс EntityTypeTransform с единственным абстрактным методом, предназначенным для размещения делегата Func, который преобразует IDataRecord в экземпляр T.
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<Type, EntityTypeTransform<T>>
Но это не работает, потому что (например) экземпляр EntityTypeTransform of Task не совпадает с экземпляром EntityTypeTransform TaskParameter.
Может ли кто-нибудь помочь мне?
Изменить: я должен добавить, что Type key = typeof (T)