有一个搜索,但在这方面找不到任何东西,所以我认为目前可能无法做到。
给出以下两个元组
var a = (a: "1", b: 2);
var b = (c: "2", d: 0.1);
我是否可以将这些对象动态组合/合并为一个
var c = a + b;
理想情况下,维护属性的名称,以便我们仍然可以执行以下操作
var d = c.b + c.d;
我知道我可以做以下事情,但这对我想要实现的目标不起作用
var c = (first:a, second:b);
我正在寻找一个通用的解决方案,即我不关心每个元组中有多少属性。
此外,我知道可能存在一些问题,例如,如果有两个具有相同名称的属性会发生什么。在这种情况下,我很高兴被覆盖的财产或要改变的名称,因此它变成了a_1。
答案 0 :(得分:3)
从描述用例的方式来看,您需要知道字段的名称及其值。因此,C#7的元组不会在这里提供帮助:
ValueTuple<,>
,ValueTuple<,,>
等,即一个包含两个字段的元组和一个三元组的元组是完全不同的类型。您需要的是键/值对以及可以合并为新集的集合。因此,最符合您需求的类型为Dictionary<string,object>
。