查询字典以查找唯一的通用对象

时间:2017-10-02 23:56:08

标签: c# generics generic-collections

我正在尝试编写一个返回通用对象的泛型方法。该方法将采用泛型类型并使用它来查询具有匹配类型的对象的集合。

我尝试将此对象添加到集合时尝试了但存在编译错误。 cannot convert from CustomSet<AppLog>' to 'CustomSet<System.Type>'

我如何符合此规范?

public CustomSet<TEntity> Set<TEntity>() where TEntity : class
{
    Type key = typeof(TEntity);

    if (allSets.ContainsKey (key))
    {
        return allSets[key];
    }
}

private static readonly Dictionary<Type, CustomSet<Type>> allSets = new Dictionary<Type, CustomSet<Type>>()
{
    {typeof(AppLog), AppLogs}
};

public static CustomSet<AppLog> AppLogs { get; set; }

修改

代码已更新,因此只会出现上述编译错误

1 个答案:

答案 0 :(得分:3)

您需要使用educationalYear字典来降低类型安全性。将其定义为appSets,并在检索后将项目强制转换为Dictionary<Type, object>

CustomSet<TEntity>