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

标签 c# arrays object tuples

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

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/

相关文章:

c++ - 在 C++ 中创建对象的函数

java - 如果我在 Java 中覆盖 'equals' 方法,为什么需要覆盖 hashcode?

c# - WebApi - Autofac 无法解析参数 HttpRequestMessage

c# - 取消 TabPage.Validating 锁定我的 UI

c# - 人们想要使用嵌套类的原因是什么?

c# - 系统.BadImageFormatException : Could not load file or assembly 'x_Accessor,...' This assembly is built by a runtime newer

java - 为 ListObjectClass 中的每个对象创建 ID

java - 将 JSON 数组数据分组并计算是否有两个相同的值

c++ - 在一个类中定义两个类,并访问其成员

Java::在不同的类中使用鼠标监听器对象