C# 获取动态类型的属性

C# 获取动态类型的属性,c#,object,model-view-controller,dynamic,C#,Object,Model View Controller,Dynamic,我想知道如何获得我的动态类型的属性 这是获取列表的函数 var result = _files.GetFileContent(reportId).Result; 例如,我得到一个如下返回的对象: 当我打开它时,您可以看到我的属性: 我的想法是我永远不知道这些属性。它们可以随着时间的推移而改变。所以我想要一个包含所有属性的列表。所以我可以动态地使用它们 如何从第一项(ChargesDelta\u DIFF\u 5、ChargesFile\u RIGHT、ChargesEcep\u LEFT等

我想知道如何获得我的动态类型的属性

这是获取列表的函数

var result = _files.GetFileContent(reportId).Result;
例如,我得到一个如下返回的对象:

当我打开它时,您可以看到我的属性:

我的想法是我永远不知道这些属性。它们可以随着时间的推移而改变。所以我想要一个包含所有属性的列表。所以我可以动态地使用它们


如何从第一项(ChargesDelta\u DIFF\u 5、ChargesFile\u RIGHT、ChargesEcep\u LEFT等)获取属性?

您可以使用反射获取属性并将其转换为字典:

dynamic v = new { A = "a" };

Dictionary<string, object> values = ((object)v)
                                     .GetType()
                                     .GetProperties()
                                     .ToDictionary(p => p.Name, p => p.GetValue(v));
dynamic v=new{A=“A”};
字典值=((对象)v)
.GetType()
.GetProperties()
.ToDictionary(p=>p.Name,p=>p.GetValue(v));

如果有人还在为此挣扎(就像我一样),这可能会很有用

假设
数据
是要从中列出所有属性的动态

这对我有用

using System.ComponentModel;

...

dynamic data = new {
    value1 = 12,
    value2 = "asdasd",
    value3 = 98,
    value4 = "pgiwfj",
};

foreach (PropertyDescriptor prop in TypeDescriptor.GetProperties(data))
{
    Console.WriteLine("PROP: " + prop.Name);
}

...
然后它将输出:

  • 道具:价值1
  • 道具:价值2
  • 道具:价值3
  • 道具:价值4

来源:

如何声明
MyDynamicType
?集合是如何声明的?您试过了吗?它是根据我从存储过程接收到的属性动态声明的。在这里我如何使用我现有的动态IList?什么是p?仅仅引入未知变量是没有帮助的。该行抛出:CS1977不能使用lambda表达式作为动态调度操作的参数,除非首先将其强制转换为委托或表达式树类型。我不确定您的意思。这不仅仅是一个未知变量,它是lambda表达式的参数。代码应该很好。你能创建一个新问题并链接到这里吗?请输入您的完整代码@harmen@Harmen,有一个演员不见了。我不知道为什么它以前会起作用。也许我在发帖时过度概括了它。修复方法是将
v
替换为
((对象)v)
。由于它根本不返回动态属性,如何将其标记为正确答案(在ExpandoObject上确认)?