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

时间:2013-07-10 18:21:48

标签: c# serialization postsharp

我的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类,其中Serializable包含来自接口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上运行?

1 个答案:

答案 0 :(得分:0)

这是设计的。 PostSharp 2.0中的行为被认为是错误的,并在2.1中修复。没有办法回到原来的行为。