我需要动态地将参数和值添加到以下对象。到目前为止,我通过创建对象来静态(硬编码)地执行此操作,如下所示:
object parameters = new { Param1 = UserNumber, Param2 = "201403", Param3 = true };
然后在函数中将其传递为:
Helper.create(parameters);
^这有效。
但是,有时我只需要通过一个、一个或三个以上。金额可以动态变化,不一定命名相同,也可以采用不同的顺序。因此,我不能静态保留变量 Param1
、Param2
和 Param3
的名称。我也不控制“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/