C# 如何将键值对检索为具有不同类型值的通用集合?

C# 如何将键值对检索为具有不同类型值的通用集合?,c#,C#,我正在开发一个C#应用程序,我们将数据存储为sqlite中的key-value对。我已经实现了KeyValue作为(key,value)对的持有者类和ReadTransaction作为只读事务类: public class ReadTransaction { Task<T> GetValue<T>(string key); } public class KeyValue<TValue> { public KeyValue(string key

我正在开发一个
C#
应用程序,我们将数据存储为sqlite中的
key-value
对。我已经实现了
KeyValue
作为(key,value)对的持有者类和
ReadTransaction
作为只读事务类:

public class ReadTransaction
{
    Task<T> GetValue<T>(string key);
}

public class KeyValue<TValue>
{
    public KeyValue(string key)
    {
        Key = key;
    }

    public KeyValue(string key, TValue value)
    {
        Key = key;
        Value = value;
    }

    public string Key { get; }

    public TValue Value { get; set; }
}
因为这些键上的值可能是不同类型的


如何编写/实现此功能?

我建议您不要将不同类型的元素存储在同一集合中


如果需要,可以使用“object”,如
字典中的

可以将T替换为dynamic@Polly. 动态将使OP丢失类型安全每个键的T值类型不同?如果是这样,您希望
IEnumerable
如何工作?如果此集合存储不同类型的元素,而不是存储T类型的元素。如果确实需要,您可以使用“object”,但是,在将不同类型的元素存储在单个集合中之前,您确实应该三思而后行。@HasanEmrahSüngüTValue可以是键的任何类型。
Task<IEnumerable<KeyValue<T>>> GetValues<T>(IEnumerable<string> keys);