我想创建一个匿名类型,可以动态设置属性名称。它不一定是匿名类型。我想实现的只是动态设置任何对象的属性名称。它可以是ExpandoObject,但字典对我来说不起作用。
您有什么建议吗?
我想创建一个匿名类型,可以动态设置属性名称。它不一定是匿名类型。我想实现的只是动态设置任何对象的属性名称。它可以是ExpandoObject,但字典对我来说不起作用。
您有什么建议吗?
只有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);
IDynamicMetaObjectProvider
接口的类型,包括但不限于ExpandoObject
,都可以这样做。 - Jon SkeetIDictionary<string,object>
接口,因此您可以将其视为字典来填充它。 - stevemegsonExpandoObject
转换为字典并通过这种方式填充它,那么你设置的键将出现在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);