Mam kilka metod internetowych, które zwracają moje obiekty z powrotem jako serializowane XML. Jest tylko serializacją właściwości obiektu odwzorowanych NHibernate ... każdy ma pewien wgląd? Wydaje się, że metody sieciowe faktycznie serializują proxy NHibernate zamiast moich klas. Próbowałem już używać [XMLInclude] i [XMLElement], ale właściwości nadal nie są serializowane. Mam naprawdę okropny hackowy sposób na obejście tego, ale zastanawiałem się, czy istnieje lepszy sposób!Jak serializować wszystkie właściwości obiektu odwzorowanego NHibernate?
coś takiego:
<?xml version="1.0" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="StoryManager" assembly="StoryManager">
<class name="Graphic" table="graphics" lazy="false">
<id name="Id" column="id" type="int" unsaved-value="0" >
<generator class="identity"/>
</id>
<property name="Assigned" />
<property name="Due" />
<property name="Completed" />
<property name="UglyHack" insert="false" update="false" />
<many-to-one name="Parent" class="Story" column="story_id"/>
</class>
</hibernate-mapping>
public class Graphic
{
private int m_id;
public virtual int Id
{
get { return m_id; }
set { m_id = value; }
}
private DateTime? m_assigned;
public virtual DateTime? Assigned
{
get { return m_assigned; }
set { m_assigned = value; }
}
private DateTime? m_due;
public virtual DateTime? Due
{
get { return m_due; }
set { m_due = value; }
}
private DateTime? m_completed;
public virtual DateTime? Completed
{
get { return m_completed; }
set { m_completed = value; }
}
public bool UglyHack
{
get { return m_due < m_completed; } // return something besides a real mapped variable
set {} // trick NHibernate into thinking it's doing something
}
}
To oczywiście nie sposób pisać kod. Jeśli nie mam tam "fałszywego" mapowania (właściwość UglyHack), ta właściwość nie będzie serializowana. Na razie zajmuję się używaniem (Data) Przenoszenia Obiektów i może być na czymś przy użyciu refleksji ...
Proszę napisać mały przykład. –