gpt4 book ai didi

c# - 使用反射 C# 将动态对象转换为类型

转载 作者:太空狗 更新时间:2023-10-29 17:43:07 25 4
gpt4 key购买 nike

考虑以下代码

 var currentType = Type.GetType("Some.Type, Some");
dynamic myDynamic = new System.Dynamic.ExpandoObject();
myDynamic.A = "A";
var objectInCorrectType = ???

如何将动态转换为 currentType?

最佳答案

正如@Lasse 评论的那样,您不能将动态对象转换为特定类型。

但是,您的问题提到了“反射”,所以我怀疑您正在寻找一种简单映射属性值的方法(即 Lasse 的评论中的“创建一个新的 X 并复制值等”):

...
myDynamic.A = "A";

// get settable public properties of the type
var props = currentType.GetProperties(BindingFlags.Public | BindingFlags.Instance)
.Where(x => x.GetSetMethod() != null);

// create an instance of the type
var obj = Activator.CreateInstance(currentType);

// set property values using reflection
var values = (IDictionary<string,object>)myDynamic;
foreach(var prop in props)
prop.SetValue(obj, values[prop.Name]);

关于c# - 使用反射 C# 将动态对象转换为类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32954863/

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