Могу ли я подавить ошибки пользовательского компилятора с помощью Roslyn?C#

Место общения программистов C#
Ответить
Anonymous
 Могу ли я подавить ошибки пользовательского компилятора с помощью Roslyn?

Сообщение Anonymous »

Я работаю с платформой, которая активно использует отражение и генерацию кода для инициализации членов определенных специальных типов. Это выглядит следующим образом:

Код: Выделить всё

public class MyGraph : PXGraph
{
public PXSelect view;
}
Я хочу добавить в свой код анализ ссылочных типов, допускающих значение NULL. Однако я не могу найти элегантное решение, которое позволило бы избежать многочисленных предупреждений о неинициализации полей, не допускающих значения NULL.
Они отображаются либо в полях, либо в конструкторе типа. Платформа их инициализирует
Я знаю, что могу подавить предупреждения из анализа, допускающего значение NULL. Однако мне не нравится, как это выглядит. Мне не нравятся прагмы, потому что они загромождают код, и еще больше мне не нравятся атрибуты подавления.
Мне не нравится следующее объявление, потому что оно кажется мне ерундой:

Код: Выделить всё

public class MyGraph : PXGraph
{
public PXSelect view = null!; // or = default!
}
Я также пробовал использовать атрибуты, допускающие значение NULL, без особой пользы.
Я пытался использовать ключевое слово require следующим образом:

Код: Выделить всё

public class MyGraph : PXGraph
{
public required PXSelect view;
}
Мне больше всего нравится это объявление, но я получаю ошибку компилятора о неинициализированном поле.
Есть ли более сложный способ подавить предупреждения компилятора ? Могу ли я использовать Roslyn, чтобы как-то повлиять на диагностику компилятора?

Подробнее здесь: https://stackoverflow.com/questions/792 ... ith-roslyn
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»