关于扩展方法的快速动力学问题



是否可以将动态变量应用于扩展方法?

示例:从我当前的项目中提取

for (int t = 0; t < 5; t++)
{
for (int e = 0; e < 9; e++) 
{ 
//                                                         t         e
projectArray[1, t, e] = projectFromJson.Templates.Template_0.Element_0;
projectArray[1, t, e] = projectFromJson.Templates.Template_0.Element_0;
projectArray[1, t, e] = projectFromJson.Templates.Template_0.Element_0;
}
}

期望的结果:我希望能够用Template_0到Template_5的变量组装数组,并为每个模板添加元素Element_0到Element_10,而不必写60行几乎完全相同的东西。

平台:C#Windows窗体应用程序,Visual Studio 2019

如果反射对你来说是可以的,那么你可以使用类似于这个的东西

for(var i=0;i<templatesCount;i++)
{
var propInfo =projectFromJson.Templates.GetType().GetProperty("Template_"+i);
var template = propInfo.GetValue(projectFromJson.Templates);

for(var j=0;j<elementsCount;j++)
{
var elemPropInfo = template.GetType().GetProperty("Element_" + j);
var elem = elemPropInfo.GetValue(template);

projectArray[1, i, j] = elem;
}
}

当然,您可以创建扩展方法,它将使用这样的技术。

免责声明:这只是一个概念,我并没有真正测试过。

下面是控制台代码示例。您可以从循环中获取模板和元素,并以所需格式获取

static void Main(string[] args)
{
for (int t = 0; t <= 5; t++)
{
for (int e = 0; e <= 9; e++)
{
//                                                         t         e
Console.WriteLine("First Template t:" + t + "Second Template e:"+e);

}
}
Console.Read();
}

最新更新