deD*_*ogs 5 c# arrays properties
使用JavaScript可以使用点表示法或数组表示法访问对象.
var myArray = {e1:"elem1",e2:"elem2",e3:"elem3",e4:"elem4"};
var val1 = myArray["e1"];
var val2 = myArray.e1;
Run Code Online (Sandbox Code Playgroud)
是否可以使用C#实现这一目标?
这就是我的尝试:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection frmVals)
{
string value;
Owner owner = new Owner();
foreach (var key in frmVals.AllKeys)
{
value = frmVals[key];
owner[key] = value;
}
}
Run Code Online (Sandbox Code Playgroud)
虽然没有办法完全用C#做到这一点.您可以通过多种方式更改代码,从而实现目标.首先,你可以使用这样的字典:
var something = new Dictionary<string, object>() {
{ "property", "value"},
{ "property1", 1}
};
foreach (var keyVal in something) {
var property = keyVal.Key;
var propertyValue = keyVal.Value;
}
Run Code Online (Sandbox Code Playgroud)
另一个选择是动态地做:
dynamic somethingDyn = new System.Dynamic.ExpandoObject();
somethingDyn.property = "value";
somethingDyn.property1 = 1;
var somethingDynDict = (IDictionary<string, object>)somethingDyn;
var propValue = somethingDyn["property"];
foreach (var keyVal in somethingDynDict) {
var property = keyVal.Key;
var propertyValue = keyVal.Value;
}
Run Code Online (Sandbox Code Playgroud)
如果需要遍历强类型对象的属性,可以使用反射:
var owner = new Metis.Domain.User();
var properties = owner.GetType().GetProperties();
foreach (var prop in properties) {
object value = prop.GetValue(owner, null);
}
Run Code Online (Sandbox Code Playgroud)