小编Stu*_*eks的帖子

保持字典<Type,MyClass <T >>,其中元素可按类型引用

我有一个名为EntityTypeTransform的抽象类,它有一个抽象方法,用于保存将IDataRecord转换为T实例的Func委托.

public abstract class EntityTypeTransform<TEntityType> where TEntityType : class
{
    public abstract Func<IDataRecord, TEntityType> GetDataTransform();
}
Run Code Online (Sandbox Code Playgroud)

该类的实现可能看起来像(看起来像):

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"]
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想在通用字典中保留每个类的实例,例如:

Dictionary<Type, EntityTypeTransform<T>>
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为(例如)EntityTypeTransform Of Task的实例与EntityTypeTransform Of TaskParameter的实例不同.

谁能帮我吗?

编辑:我应该添加Type key = typeof(T)

c# generics dictionary

14
推荐指数
2
解决办法
338
查看次数

标签 统计

c# ×1

dictionary ×1

generics ×1