我在 MVC4 Web 应用程序中使用 VS2012 中的 .NET 4.5。我正在尝试构建一个接受未知数量参数的自定义属性。
我有以下代码:
public sealed class MyCustomAttribute : System.Web.Http.Filters.AuthorizationFilterAttribute
{
private readonly string[] _someStrings;
public MyCustomAttribute(params string[] someStrings)
{
_someStrings = someStrings;
}
}
我自然会收到以下代码分析警告:
CA1019 为属性参数定义访问器为属性“MyCustomAttribute”的位置参数“someStrings”添加公共只读属性访问器。
如果我用私有集定义一个自动属性,我会收到警告说我应该返回集合而不是数组
CA1819 属性不应返回数组 更改“MyCustomAttribute.SomeStrings”以返回集合或使其成为方法。
问题是我不想公开一个数组,因为我不希望任何人更改数组内部的内容。最多,我想返回一个 ReadOnlyCollection。如果我将属性的类型更改为“ReadOnlyCollection”,我会再次收到第一个警告,因为它与参数名称(不区分大小写)和类型上的属性匹配。
问题:我怎样才能做到这一点,而不需要抑制警告?