奇怪的属性行为

Odd attribute behavior

我对属性有些好奇。我正在使用 xUnit 的 InlineData 属性,它采用对象的参数(params object [])。如果我给它一个数组和一个字符串,一切似乎都很好:

[InlineData(new string[] { "Yada", "Yada yada" }, "Yada yada yada")]

...但是如果我只给它一个数组:

[InlineData(new string[] { "Yada", "Yada yada" })]

...然后我得到这个 error:

An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type

可能是什么问题?

我将突出显示错误消息的重要部分

An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type

参数类型是object[]所以不能传string[].

在第一个示例中,您隐式传递了一个对象数组,一个是字符串数组,另一个是字符串...在第一个示例中,您实际上是在这样做:

[InlineData(new object[]{new string[] { "Yada", "Yada yada" }, "Yada yada yada"})]

在第二个例子中,你可以做到这一点

[InlineData(new object[] { "Yada", "Yada yada" })]