我有一个使用 NET8 NativeAOT 成功发布的程序,但 Type.GetProperties() 适用于某些类,其中属性 r 正确返回,但不适用于其他类,它根本不返回任何属性。我不知道为什么,也找不到调试的线索。有人可以给一些提示吗?
它不适用于像这样的简单课程:
public sealed partial class UILogText(string name = "", string text = "")
{
public string Name { get; set; } = name;
public string Text { get; set; } = text;
public override string ToString() => Text;
}
但对于一些复杂的类效果很好,例如:
public sealed partial class GatewayInfo : GatewayEntry, IEntryInfo
{
//39 public properties (note:not fields) ...
}
我不知道我还能用它做什么。
我知道 NativeAOT 在某些情况下存在反射问题,但这里的问题是它已经适用于某些类。我无法说出上述示例之间的关键区别。
有人可以提示一下这里发生了什么吗?或者有什么线索可以找出来吗?
[method: DynamicDependency(DynamicallyAccessedMemberTypes.PublicProperties, typeof(UILogText))]
public sealed partial class UILogText(string name = "", string text = "")
{
public string Name { get; set; } = name;
public string Text { get; set; } = text;
public override string ToString() => Text;
}
根据上面的评论,添加 DynamicDependencyAttribute 解决了我的问题!