PostSharp。如何引入可序列化的属性

时间:2014-03-25 13:03:01

标签: c# serialization aop postsharp binaryformatter

我需要引入字段,该值必须与方面修饰的类的其他字段序列化。

这是我的班级:

[Serializable]
[MyAspect(1)]
public MyClass
{
    public int IntField = 0;
}

这是我的方面:

[Serializable]
public class MyAspect: InstanceLevelAspect
{
    private int _aspectField;

    public MyAspect(int aspectField)
    {
        _aspectField = aspectField;
    }

    [IntroduceMember]
    public int IntroducedProperty { get; set; }
}

在反编译dll之后,我看到IntroducedProperty已被添加到MyClass定义中,但它将所有调用委托给MyAspect.IntroducedProperty,从而委托给它的后备字段。

因此,序列化在MyClass中看不到与IntroducedProperty相对应的任何字段。

此外,PostSharp在MyClass中生成MyAspect类型的字段,该字段由NonSerializable属性标记。

是否有一些方法可以引入参与序列化的字段?

1 个答案:

答案 0 :(得分:2)

解决方法:http://support.sharpcrafters.com/discussions/questions/742-how-to-introduce-property-for-serialization

我需要在MyClass中实现ISerializable接口,或者通过aspect

引入该接口