如何解决如何创建在C#中包含不同类型的字典类型?
我想为字典定义一种类型,该类型将不同的类型保存为值。实际上,我在寻找How do I create a Dictionary that holds different types in C#,但寻找的是immutable dict类型,而不是字典“变量”。
假设我有一本代表用户数据的字典
using System.Collections.Immutable;
var immutableUserVariable = new Dictionary<string,object>
{
{ "Id",0 },{ "FirstName","Annett" },{ "LastName","Jones"},{ "Active",true}
}.ToImmutableDictionary();
隐式推断类型如下(.NET interactive的输出):
| key | type | value |
|:---------:|:--------------:|:------:|
| LastName | System.String | Jones |
| Active | System.Boolean | True |
| FirstName | System.String | Annett |
| Id | System.Int32 | 0 |
我可以在如下所示的不可变列表中使用该用户
var immutableUserList = new[] { immutableUserVariable }.ToImmutableList();
immutableUserList
但是,除了创建字典变量immutableUserVariable
之外,我想为该自定义的,不可变的字典(User
)创建一个类型,该类型可以用来创建变量。这将允许我使用特定的dict类型创建列表,例如
var immutableListBuilder = ImmutableList.CreateBuilder<User>();
// add dicts of type User
immutableListBuilder.Add(...);
immutableListBuilder.Add(...);
解决方法
您可以使用对象类型作为值
Dictionary<string,object> pairs = new Dictionary<string,object>();
pairs.Add("key1",1);
pairs.Add("key2","string");
int i = (int)pairs["key1"];
或者您可以创建自定义类:
public class MyDictionary : Dictionary<string,object>
{
public T Get<T>(string key)
=> (T)this[key];
}
MyDictionary pairs = new MyDictionary();
pairs.Add("key1",1);
pairs.Get<int>("key1");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。