一尘不染

如何在C#中遍历匿名对象的属性?

c#

我想将一个匿名对象作为方法的参数,然后遍历其属性以将每个属性/值添加到dynamic ExpandoObject

所以我需要从

new { Prop1 = "first value", Prop2 = SomeObjectInstance, Prop3 = 1234 }

了解每个属性的名称和值,并将其添加到中ExpandoObject

我该如何完成?

旁注:这将在我的许多单元测试中完成(我正在使用它来重构设置中的许多垃圾),因此性能在某种程度上是相关的。我对反射的知识还不够肯定,但是从我的理解来看,它的性能非常高,所以如果可能的话,我宁愿避免它…

后续问题: 正如我所说,我将这个匿名对象作为方法的参数。我应该在方法的签名中使用哪种数据类型?如果使用,所有属性都可用object吗?


阅读 305

收藏
2020-05-19

共1个答案

一尘不染

foreach(var prop in myVar.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
   Console.WriteLine("Name: {0}, Value: {1}",prop.Name, prop.GetValue(myVar,null));
}
2020-05-19