![](/img/trans.png)
[英]How do I recursively loop through a reflected type and set it's child-object values?
[英]How do I set numbered object properties to values in an array with a for loop?
我想做這樣的事情:
for (var i =0; i < obj.ValueList.Count; i++)
{
var runCode = $"oldObj.Mod{i+1} = obj.ValueList[{i}].Value;";
// Execute runCode; then 'oldObj.Mod1 = obj.ValueList[0].Value'
}
...我只是認為最終將優於oldObj.Mod1 = obj.ValueList[0].Value
5或10或100次顯式重復。
它已經做過的事情。
思考? 救命? 方向?
免責聲明 :我是C#Eval Expression的所有者
該庫允許在運行時執行動態C#代碼。 它不是免費的,但也可以輕松解決此類問題。
在線示例: https : //dotnetfiddle.net/B5t9jD
var oldObj = new OldObj();
var obj = new Obj() { ValueList = new List<ObjValue>() { new ObjValue(111), new ObjValue(222), new ObjValue(333), new ObjValue(444), new ObjValue(555) }};
for (var i = 0; i < obj.ValueList.Count; i++)
{
var runCode = Eval.Execute("oldObj.Mod" + (i+1) + " = obj.ValueList["+i+"].Value;", new { oldObj, obj});
}
FiddleHelper.Dump(oldObj);
我不確定您是否真的必須使用for循環,但是您實際上可以嘗試通過反射獲取屬性,然后設置值(請參閱: https : //stackoverflow.com/a/30475988/9709828 ),或者您可以還嘗試與LINQ一起使用,以獲取必要的oldObj屬性列表,並通過for循環設置值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.