1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
/// <summary>
/// Créer le proxy physique
/// </summary>
/// <param name="type">interface source</param>
public void CreateProxy(Type type)
{
NamespaceDeclaration ns = new NamespaceDeclaration("Impl");
ClassDeclaration maClass = ns.AddClass(type.Name.Remove(0, 1));
// set base class as CollectionBase
maClass.Parent = new TypeTypeDeclaration(typeof(BaseSession));
maClass.Interfaces.Add(type);
// default constructor
maClass.AddConstructor();
int compteurPropriete = 0;
//on surcharge le getter et setter
foreach (PropertyInfo member in type.GetProperties())
{
maClass.AddProperty(member.PropertyType, member.Name);
//on retourne
//return (int?)GetValueFromSession(member.Name);
maClass.Properties[compteurPropriete].Get.Add(Stm.Return(Expr.This.Method("GetFromSession").Invoke(Expr.Prim(member.Name)).Cast(member.PropertyType)));
//le set
//SetValueToSession(member.Name, value);
maClass.Properties[compteurPropriete].Set.Add(Expr.This.Method("SetToSession").Invoke(Expr.Prim(member.Name), Expr.Value));
compteurPropriete++;
}
CodeGenerator gen = new CodeGenerator();
gen.CreateFolders = true;
gen.GenerateCode("monChemin\\Dossier", ns); |
Partager