Я работаю с .NET 4.5 в VS2012 в веб-приложении MVC4. Я пытаюсь создать настраиваемый атрибут, который принимает еще неизвестное количество аргументов.
У меня такой код:
public sealed class MyCustomAttribute : System.Web.Http.Filters.AuthorizationFilterAttribute
{
private readonly string[] _someStrings;
public MyCustomAttribute(params string[] someStrings)
{
_someStrings = someStrings;
}
}
и, естественно, я получаю следующее предупреждение анализа кода:
CA1019 Определение средств доступа для аргументов атрибута Добавьте общедоступное средство доступа только для чтения для позиционного аргумента someStrings атрибута MyCustomAttribute.
Если я определяю свойство auto с частным набором, я получаю предупреждение о том, что я должен возвращать коллекции вместо массива
Свойства CA1819 не должны возвращать массивы. Измените MyCustomAttribute.SomeStrings, чтобы вернуть коллекцию или сделать ее методом.
Проблема в том, что я не хочу раскрывать массив, так как я не хочу, чтобы кто-либо менял то, что находится внутри массива. В лучшем случае я хотел бы вернуть ReadOnlyCollection. Если я изменю тип свойства на «ReadOnlyCollection», я снова получаю первое предупреждение, поскольку оно соответствует свойству по имени аргумента (без учета регистра) и типу.
Вопрос: Как я могу этого добиться, не подавляя предупреждения?