首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

c# - 当我不知道(T)的类型时,如何反序列化通用列表<T>?

在C#中,当您不知道(T)的类型时,如何反序列化通用列表<T>,您可以使用以下方法:

  1. 使用Type类:

在C#中,您可以使用Type类来表示类型。您可以使用Type.GetType()方法获取类型的实例。然后,您可以使用反射来实例化对象并调用相应的方法。

例如,如果您有一个通用列表List<T>,您可以使用以下代码来反序列化它:

代码语言:csharp
复制

Type listType = typeof(List<>).MakeGenericType(new Type[] { typeof(T) });

IList list = (IList)Activator.CreateInstance(listType);

// 添加元素到列表中

// ...

代码语言:txt
复制
  1. 使用JsonConvert.DeserializeObject()方法:

如果您使用的是Newtonsoft.Json库,您可以使用JsonConvert.DeserializeObject()方法来反序列化通用列表。例如:

代码语言:csharp
复制

string jsonString = "{\"Property1\":\"Value1\",\"Property2\":\"Value2\"},{\"Property1\":\"Value3\",\"Property2\":\"Value4\"}";

Type listType = typeof(List<>).MakeGenericType(new Type[] { typeof(T) });

IList list = JsonConvert.DeserializeObject(jsonString, listType) as IList;

代码语言:txt
复制

请注意,您需要将jsonString替换为您要反序列化的JSON字符串。

  1. 使用System.Text.Json库:

如果您使用的是.NET Core 3.0及更高版本,您可以使用System.Text.Json库来反序列化通用列表。例如:

代码语言:csharp
复制

string jsonString = "{\"Property1\":\"Value1\",\"Property2\":\"Value2\"},{\"Property1\":\"Value3\",\"Property2\":\"Value4\"}";

Type listType = typeof(List<>).MakeGenericType(new Type[] { typeof(T) });

IList list = JsonSerializer.Deserialize(jsonString, listType) as IList;

代码语言:txt
复制

请注意,您需要将jsonString替换为您要反序列化的JSON字符串。

这些方法可以帮助您在不知道类型的情况下反序列化通用列表。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券