我有一个帮助器方法,它返回一个类型的公共静态只读字段列表:
public static ReadOnlyCollection<T> GetFields<T>()
where T : class
{
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:‘This’参数不满足 调用中的"DynamicallyAccessedMemberTypes.PublicFields" "System.Type.GetFields(BindingFlgs)".的泛型参数‘T’ ‘Path\to\Helper\GetFields()’没有匹配的批注. 源值必须至少声明与以下内容相同的要求 在它被分配到的目标位置上声明.
如何修复此错误?单元测试调用helper方法只是为了确保特定类中的常量字段是唯一的,并遵循某些语法约定.