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上确认)?