aide DynamicProxy
2.2 Je pense que je vois cette question:Le proxy n'obtient pas d'attributs sur les propriétés virtuelles?
"attributs héritables sur les propriétés virtuelles non disponibles sur proxy"
http://support.castleproject.org/projects/DYNPROXY/issues/view/DYNPROXY-ISSUE-109
J'ai une classe de base avec une propriété virtuelle. La propriété est marquée avec [XmlIgnore]
. Si je sérialise une classe dérivée, la propriété n'est pas sérialisée. Mais si je crée un proxy pour la classe dérivée, la propriété EST sérialisée. Voici une application de console simple montrant le problème:
using System;
using System.Xml.Serialization;
using Castle.DynamicProxy;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
var derived = new Derived { IsDirty = true, Sample = "ABC"};
derived.Save();
Console.WriteLine("\n\nProxied...\n");
var generator = new ProxyGenerator();
var derivedProxy = generator.CreateClassProxy<Derived>();
derivedProxy.IsDirty = true;
derivedProxy.Sample = "ABC";
derivedProxy.Save();
Console.WriteLine("\n\n");
Console.ReadKey();
}
}
public abstract class Base
{
[XmlIgnore]
public virtual bool IsDirty { get; set; }
public virtual void Save()
{
var ser = new XmlSerializer(this.GetType());
ser.Serialize(Console.Out, this);
}
}
public class Derived : Base
{
public virtual string Sample { get; set; }
}
}
Est-ce un bug? Ou est-ce que je fais quelque chose de mal? Une solution de contournement rapide consiste à rendre ma propriété IsDirty
non virtuelle. Cela peut être acceptable dans le scénario avec lequel je travaille, mais je préférerais que ce soit virtuel.
Merci.
Patrick Steele http://weblogs.asp.net/psteele
Est-ce un attribut héritables? 'XmlIgnore' ... –