Общий параметр не имеет соответствующих аннотаций в .NET 8 AOT.C#

Место общения программистов C#
Ответить
Anonymous
 Общий параметр не имеет соответствующих аннотаций в .NET 8 AOT.

Сообщение Anonymous »


У меня есть вспомогательный метод, который возвращает список общедоступных статических полей типа, доступных только для чтения:

public static ReadOnlyCollection GetFields() где Т: класс { return typeof(T).GetFields(BindingFlags.Public | BindingFlags.Static) .Where(x => x.IsInitOnly && x.FieldType == typeof(T)) .Select(x => (T)x.GetValue(null)) .ToList().AsReadOnly(); } Когда я конвертирую свой проект в .NET 8 AOT, я получаю следующую ошибку:

ошибка IL2090: аргумент «этот» не удовлетворяет «DynamicallyAccessedMemberTypes.PublicFields» при вызове 'System.Type.GetFields(BindingFlags)'. Общий параметр «Т» 'path\to\helper\GetFields()' не имеет соответствующих аннотаций. Исходное значение должно декларировать по крайней мере те же требования, что и те, которые объявлен в целевом местоположении, которому он назначен.

Как исправить эту ошибку? Вспомогательный метод вызывается модульными тестами только для того, чтобы гарантировать уникальность константных полей в определенных классах и соответствие определенным синтаксическим соглашениям.
Ответить

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

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

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

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

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