我想做这样的事情:
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次显式重复更好。
必须已完成。
有什么想法吗?救命?方向?
答案 0 :(得分:1)
免责声明:我是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);
答案 1 :(得分:0)
我不确定您是否真的必须使用for循环,但是您实际上可以尝试通过反射获取属性,然后设置值(请参阅:https://stackoverflow.com/a/30475988/9709828),或者也可以尝试使用LINQ用于获取oldObj的属性列表并通过for循环设置值