Чистка предупреждения компилятора C# CS3016: Массивы как аргументы атрибута не CLS-совместимы [дубликат]

5
задан Community 23 May 2017 в 12:21
поделиться

2 ответа

Я бы принял следующий процесс:

  • Определите атрибуты, которые имеют массивы в своих конструкторах (сложность, необходимая для этого, очевидно, зависит от того, сколько у вас классов, производных от Attribute)
  • Используйте опцию Visual Studio "Find All References" на конструкторах классов атрибутов, чтобы найти вещи, которые украшены атрибутом с помощью массивов.

Первая часть должна быть довольно простой, если рассматриваемые атрибуты определены в вашем решении.

Если атрибуты взяты из зависимостей, то вам, возможно, придется использовать regex-поиск, чтобы найти места, где используются такие атрибуты.

1
ответ дан 15 December 2019 в 00:52
поделиться

Вы объявили такой класс, как:

[SomeAttribute(new string[] { "foo", "bar" })
class SomeClass { }

, или объявили атрибут, например:

class SomeAttribute : Attribute
{
    public SomeAttribute(string[] arr) { } // or another array
}

И все это происходит, потому что ваша сборка отмечена чтобы соответствовать требованиям CLSC:

[сборка: CLSCompliant (true)]

3
ответ дан 15 December 2019 в 00:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: