C#属性数组符号 [英] C# properties as array notation
本文介绍了C#属性数组符号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用JavaScript有可能使用点符号或数组符号来访问对象。
VAR myArray的= {E1:elem1,E2:elem2时,E3:elem3E4elem4};
VAR VAL1 = myArray的[E1];
VAR将val2 = myArray.e1;
是否有可能做到这一点使用C#?
这是我尝试:
的[AcceptVerbs(HttpVerbs.Post)
公众的ActionResult编辑(INT ID,的FormCollection frmVals)
{
字符串值;
所有者所有者=新主人(); 的foreach(在frmVals.AllKeys VAR键)
{
值= frmVals [关键]
主[关键] =价值;
}
}
解决方案
虽然没有办法用C#正好做到这一点。你可以改变你code以下几种方式可以实现你的目标。首先,你可以使用一个字典是这样的:
VAR东西=新词典<字符串对象>(){
{财产,价值},
{property1,1}
};
的foreach(在一些VAR KEYVAL){
VAR财产= keyVal.Key;
VAR为PropertyValue = keyVal.Value;
}
另一种选择是动态地做到这一点:
动态somethingDyn =新System.Dynamic.ExpandoObject();
somethingDyn.property =值;
somethingDyn.property1 = 1;VAR somethingDynDict =(IDictionary的<字符串对象>)somethingDyn;
VAR propValue = somethingDyn [属性];的foreach(在somethingDynDict VAR KEYVAL){
VAR财产= keyVal.Key;
VAR为PropertyValue = keyVal.Value;
}
如果您需要通过性能强类型的对象,您可以使用反射到迭代:
VAR所有者=新Metis.Domain.User();
。变种属性= owner.GetType()的GetProperties();
的foreach(在性能VAR道具){
对象值= prop.GetValue(所有者,NULL);
}
Using JavaScript it's possible to access an object using the dot notation or array notation.
var myArray = {e1:"elem1",e2:"elem2",e3:"elem3",e4:"elem4"};
var val1 = myArray["e1"];
var val2 = myArray.e1;
Is it possible to accomplish this using C#?
This is what I have attempted:
[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;
}
}
解决方案
While there is no way to do this exactly with C#. You could change your code in several ways that may accomplish your goal. First, you could use a Dictionary like this:
var something = new Dictionary<string, object>() {
{ "property", "value"},
{ "property1", 1}
};
foreach (var keyVal in something) {
var property = keyVal.Key;
var propertyValue = keyVal.Value;
}
Another option would be to do it dynamically:
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;
}
If you need to iterate through properties on a strongly typed object you could use reflection:
var owner = new Metis.Domain.User();
var properties = owner.GetType().GetProperties();
foreach (var prop in properties) {
object value = prop.GetValue(owner, null);
}
这篇关于C#属性数组符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文