Мне нужно ввести поле, значение которого должно быть сериализовано с другими полями класса, оформленными аспектом.
Это мой класс:
[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, тем самым своему резервному полю.
Итак, сериализация не видит ни одного поля, соответствующего IntroducedProperty, в MyClass.
Также PostSharp генерирует в MyClass поле типа MyAspect, отмеченное атрибутом NonSerializable.
Есть ли способы ввести поле, которое будет участвовать в сериализации?