gpt4 book ai didi

.net - 有没有办法将动态或匿名对象转换为强类型的声明对象?

转载 作者:行者123 更新时间:2023-12-03 07:32:25 25 4
gpt4 key购买 nike

如果我有一个动态对象或匿名对象,其结构与强类型对象的结构完全匹配,是否有 .NET 方法可以从动态对象构建类型对象?

我知道我可以使用 LINQ dynamicList.Select(dynamic => new Typed { .... } 类型的东西,或者我可以使用 Automapper,但我想知道是否没有专门为此构建的东西?

最佳答案

您可以序列化为中间格式,然后立即反序列化它。这不是最优雅或最有效的方式,但它可能会完成您的工作:

假设这是你的类(class):

// Typed definition
class C
{
public string A;
public int B;
}

这是您的匿名实例:

// Untyped instance
var anonymous = new {
A = "Some text",
B = 666
};

您可以将匿名版本序列化为中间格式,然后再次将其反序列化为类型化版本。

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var json = serializer.Serialize(anonymous);
var c = serializer.Deserialize<C>(json);

请注意,理论上这对于任何序列化器/反序列化器( XmlSerializer 、二进制序列化、其他 json 库)都是可能的,只要往返是对称的。

关于.net - 有没有办法将动态或匿名对象转换为强类型的声明对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17101190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com