gpt4 book ai didi

c# - C#动态创建对象数组

转载 作者:行者123 更新时间:2023-11-30 20:44:01 27 4
gpt4 key购买 nike

我需要动态地将参数和值添加到以下对象。到目前为止,我通过按如下方式创建对象来静态(硬编码)执行此操作:

object parameters = new { Param1 = UserNumber, Param2 = "201403", Param3 = true };

然后在函数中,将其传递为:

Helper.create(parameters);

^这有效。

但是,有时我只需要通过一个、一个都不通过,或者超过这三个。金额可以动态变化,不一定要命名相同,也可以采用不同的顺序。所以,我不能静态地保留变量 Param1Param2Param3 的名称。我也不控制“create()”函数的行为。

我尝试了这个(以及更多):

List<Tuple<object, object>> tupleList = new List<Tuple<object, object>>();

tupleList.Add(new Tuple<object, object>("Number", UserNumber));
tupleList.Add(new Tuple<object, object>("Start", 201403));
tupleList.Add(new Tuple<object, object>("Show", true));

object tuptest = tupleList.Cast<object>().ToArray();

但是它将它创建为一个包含对象的数组。当您逐步调试时,它们的显示与我需要的不同。

文档示例是:

Helper.create( new { Parameter1 = "Text", Parameter2 = 1000 } );

如何动态创建它?

最佳答案

使用 params object[] args 声明方法的签名,或更具体的类型。这将允许您向该方法传递任意数量(或不传递)的参数,然后您可以在该方法内部迭代这些参数。

例如:

public void Foo(params Tuple<object, object>[] args)

var a = new Tuple<object, object>("Number", UserNumber);
var b = tupleList.Add(new Tuple<object, object>("Start", 201403));
var c = tupleList.Add(new Tuple<object, object>("Show", true));

然后您可以使用 Foo(a, b, c); 调用它

关于c# - C#动态创建对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29921833/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com