类定义中的PostSharp非序列化InstanceLevelAspect对象

本文关键字:序列化 InstanceLevelAspect 对象 PostSharp 定义 | 更新日期: 2023-09-27 18:21:55

我对PostSharp有问题。代码如下:

class Program
{
    static void Main(string[] args)
    {
    }
}
interface IA
{
    int a { get; set; }
}
[Serializable]
[IntroduceInterface(typeof(IA))]
public class Aaaa : InstanceLevelAspect, IA
{
    public int a { get; set; }
}
[Serializable]
[Aaaa]
class B
{
}

使用PostSharp 2.0构建的类B可以通过接口IA中的字段进行序列化。使用PostSharp 2.1构建后,IA文件不会序列化。经过反编译后,我得到了代码:

[Serializable]
private class B : IA
{
  [NonSerialized]
  private Aaaa <>__aspect1;
  public B()
  {
    base.'u002Ector();
    this.'u003C'u003Ez__InitializeAspects();
  }
  {...}
}

在2.0版本中,代码几乎完全相同,只是有一点不同。没有[NonSerialized]属性。有没有办法让它像2.0一样在2.1上运行?

类定义中的PostSharp非序列化InstanceLevelAspect对象

这是经过设计的。PostSharp 2.0中的行为被认为是有缺陷的,并在2.1中得到了修复。没有办法回到过去的行为。