voilà j'ai la fonction suivante dans mon code:
Le but de cette fonction est de créer le clone d'une instance de classe qui elle est lièe à une base de donnée et qui est donc invalide dès que je ferme la session.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public static object GetEntitySnapShot(string connectionString, Type entityType, object id) { SessionMagager sessionManager = new SessionMagager(connectionString); ISession session = sessionManager.BuildSession(); object entityObject = session.Load(entityType, id); ICloneable entityAsCloneable = (ICloneable) entityObject; ICloneable returnObject = (ICloneable)entityAsCloneable.Clone(); sessionManager.ReleaseSession(session); return returnObject; }
Cette fonction est très jolie, mais elle ne marche pas. En effet en utilisant le type ICloneable, je ne connais pas le vrai type, donc l'opération de clonage ne fonctionne pas.
J'ai essayer de mettre en place une stratégie utilisant les templates mais je ne m'en sort pas.
Quelqu'un a-t-il un idée de comment faire ?
les contraintres étant les suivantes:
- faire une fonction générique (qui fonctione quelquesoit le type de l'entité à charger)
- donner en sortie de fonction une instance d'un objet que l'utilisateur pourra utiliser et alterer sans modifier la base. (donc pas l'objet resultat de l'appel à session.Load, mais une copie conforme de cette objet)
- session.Load a pour prototype object Load (System.Type, Object) et ne peut être modifié.
Partager