0

我想做这样的事情:

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.

必须以前做过。

想法?帮助?方向?

4

2 回答 2

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);
于 2019-02-14T19:13:41.777 回答
0

我不确定您是否真的必须使用 for 循环,但您实际上可以尝试通过反射获取属性然后设置值(参见:https ://stackoverflow.com/a/30475988/9709828 )或者您可以还尝试使用 LINQ 来获取 oldObj 属性的必要列表并通过 for 循环设置值

于 2019-02-13T21:22:18.023 回答