将数组作为属性值传递

本文关键字:值传 属性 数组 | 更新日期: 2023-09-27 17:56:13

我有一个测试方法如下:

[TestCase(new string[] { "1", "2", "5" }, Result = true)]
bool AllocateIDsTest1(IEnumerable<string> expected)
{
    var target = ...
    var actual = target.AllocateIDs(expected);
    return actual.SequenceEqual(expected);
}

但是我收到一个编译器错误:

属性参数

必须是属性参数类型的常量表达式、类型表达式或数组创建表达式。

编译器可能无法区分以下构造函数:

TestCase(params object[] args, Named Parameters);

TestCase(object ob1, Named Paramaters);

因为new string[] { "1", "2", "5" }可以解析为params object[]object.

从这篇文章中,我知道字符串数组应该可以作为编译常量传递。

如何为TestCase提供字符串数组?

将数组作为属性值传递

我使用参数方法找到了解决方案:

[TestCase("1", "2", "5", Result = true)]
public bool AllocateIDsTest1(params string[] expected)
{
    var target = ...
    var actual = target.AllocateIDs(expected);
    return actual.SequenceEqual(expected);
}