Это похоже на ошибку С# для вас?
Создайте консольное приложение для воспроизведения:
struct Test
{
public static readonly Test? Null = null;
}
class Program
{
static void Main(string[] args)
{
var t = Test.Null;
}
}
Он компилируется, но во время выполнения мы будем иметь следующее:
Необработанное исключение типа "System.TypeLoadException" произошло в файле mscorlib.dll. Дополнительная информация: Не удалось загрузить тип ConsoleApplication17.Test из сборки 'ConsoleApplication17, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null'.
Этот подход решает проблему:
struct Test
{
public static Test? Null => null;
}
Ответы
Ответ 1
Это известное ограничение реализации в CoreCLR - и компоновка экземпляра и статического поля выполняется вместе, что приводит к этой ошибке. Это нелегко исправить.
Источник: Статические поля не должны вносить вклад в циклическую структуру структуры # 4049