I'm not an NHibernate user; I write a serialization utility library. A user has logged a feature-request that I should handle NHibernate proxy classes, treating them the same as the actual type. At the moment my code is treating them as unexpected inheritance, and throwing an exception.
Is there a robust / guaranteed way of detecting such proxy types? Apparently DataContractSerializer handles this fine, so I'm hoping it is something pretty simple. Perhaps some interface or [attribute] decoration.
UPDATE: I've learned that IHibernateProxy is the thing to look for; for my purposes, should I just detect this and treat the same instance as normal? Or should I invoke something like:
Code:
Session.GetSessionImplementation().PersistenceContext.Unproxy(proxiedObject)
? Or something else?
Also, during deserialization; at the moment I would be creating the original type (not the NHibernate type). Is this fine for persistence purposes? Or is the proxy type required? If the latter; what is required to create an instance of the proxy type?
Thanks,
Marc