Общий параметр не имеет соответствующих аннотаций в .NET 8 AOT. ⇐ C#
-
Anonymous
Общий параметр не имеет соответствующих аннотаций в .NET 8 AOT.
У меня есть вспомогательный метод, который возвращает список общедоступных статических полей типа, доступных только для чтения:
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()' не имеет соответствующих аннотаций. Исходное значение должно декларировать по крайней мере те же требования, что и те, которые объявлен в целевом местоположении, которому он назначен.
Как исправить эту ошибку? Вспомогательный метод вызывается модульными тестами только для того, чтобы гарантировать уникальность константных полей в определенных классах и соответствие определенным синтаксическим соглашениям.
У меня есть вспомогательный метод, который возвращает список общедоступных статических полей типа, доступных только для чтения:
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()' не имеет соответствующих аннотаций. Исходное значение должно декларировать по крайней мере те же требования, что и те, которые объявлен в целевом местоположении, которому он назначен.
Как исправить эту ошибку? Вспомогательный метод вызывается модульными тестами только для того, чтобы гарантировать уникальность константных полей в определенных классах и соответствие определенным синтаксическим соглашениям.
Мобильная версия