动态创建匿名类型? [重复]

问题描述 投票:51回答:2

这个问题在这里已有答案:

我想创建一个匿名类型,我可以动态设置属性名称。它不必是匿名类型。我想要实现的是动态设置任何对象属性名称。它可以是ExpandoObject,但字典对我不起作用。

你有什么建议?

c# dynamic anonymous-types
2个回答
54
投票

只有ExpandoObject才能拥有动态属性。

编辑:以下是Expand Object用法的示例(来自其MSDN描述):

dynamic sampleObject = new ExpandoObject();
sampleObject.TestProperty = "Dynamic Property"; // Setting dynamic property.
Console.WriteLine(sampleObject.TestProperty );
Console.WriteLine(sampleObject.TestProperty .GetType());
// This code example produces the following output:
// Dynamic Property
// System.String

dynamic test = new ExpandoObject();
((IDictionary<string, object>)test).Add("DynamicProperty", 5);
Console.WriteLine(test.DynamicProperty);

33
投票

您可以将ExpandoObject转换为字典并以这种方式填充它,然后您设置的键将在ExpandoObject上显示为属性名称...

dynamic data = new ExpandoObject();

IDictionary<string, object> dictionary = (IDictionary<string, object>)data;
dictionary.Add("FirstName", "Bob");
dictionary.Add("LastName", "Smith");

Console.WriteLine(data.FirstName + " " + data.LastName);
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.