2017-07-27 59 views
1

是否可以构建属性名称设置为变量值的动态对象?c中有变量的动态对象#

比如这似乎是标准...

dynamic elem = new Object(); 
elem.Name = "myName"; 

但如何将这个实施?...

string fn = "FirstName"; 
string ln = "LastName"; 
dynamic elem = new Object(); 
elem.fn = "John"; 
elem.ln = "Doe"; 

哪里,我就能够调用类的属性...

string fn = elem.FirstName; 
+0

https://msdn.microsoft.com/en-us/library/xfhwa508%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 –

+0

谢谢,我试过前面,但.. 。“附加信息:无法将[]的索引应用于'object'类型的表达式。这里不涉及字典。动态对象可以有许多属性,而不仅仅是一个键和一个值。 –

+0

'例如,这看起来似乎是标准的......'否它不能工作,对象没有属性*名称* .....编辑后的正确代码 –

回答

2

的ExpandoObject还实现IDictionary<string, object>,这意味着你可以添加使用属性字符串键。

dynamic person = new ExpandoObject(); 

person.FirstName = "Alex"; 
var ln = "lastname"; 

(person as IDictionary<string, Object>)[ln] = "KeySmith"; 
+0

我注意到了-1,任何反馈将是一个赞赏。当然,应该仔细考虑使用动态/扩展对象,但我相信这正在回答这个问题。 –