public static PropertyProxy PropertyProxyFactory(ShContext context, PropertyInfo prInfo, ClassProxy parent) { if (TypeHelper.IsPrimitiveOrAlike(prInfo.PropertyType)) { return(new PropertyPrimitiveProxy(context, prInfo, parent)); } if (prInfo.PropertyType.IsSubclassOf(typeof(Base))) { return(new PropertyObjectProxy(context, prInfo, parent)); } if (TypeHelper.IsGenericList(prInfo.PropertyType)) { return(new PropertyListProxy(context, prInfo, parent)); } if (TypeHelper.IsDictionary(prInfo.PropertyType)) { return(new PropertyDictionaryProxy(context, prInfo, parent)); } if (prInfo.PropertyType.IsEnum) { return(new PropertyEnumProxy(context, prInfo, parent)); } throw new Exception("Le type " + prInfo.PropertyType.Name + " n'est pas pris en compte."); }
public ClassProxy(ShContext context, Type classType, Guid id) : base(context) { ClassProxy _proxy = this; ProxyFactory.ClassProxyFactory(Context, ref _proxy, classType, id); IsBuilt = true; }
/// <summary> /// La string s représente le type et l'id de l'objet représenté /// par le proxy sous la forme typename_id. /// Retourne le proxy, ou null si non trouvé. /// Provoque une exception si s ne répond pas au format demandé, /// ou si le type demandé n'est pas représenté dans le context. /// </summary> public static ClassProxy GetProxy(ShContext context, string s) { Tuple <Type, Guid> _representation = BaseObjectRepresentation(context, s); Set _set = context.GetSet(_representation.Item1); if (_set == null) { throw new Exception("Le type " + _representation.Item1.Name + " n'est pas représenté dans le context."); } return(_set.GetProxy(_representation.Item2)); }
public ClassProxy(ShContext context, Base entity) : base(context) { if (entity == null) { throw new ArgumentNullException("entity"); } ClassProxy _proxy = this; ProxyFactory.ClassProxyFactory(Context, ref _proxy, entity.GetType(), entity.ID); __entity = entity; UpdateProxyValues(); IsBuilt = true; }
/// <summary> /// La string s représente le type et l'id de l'objet représenté /// par le proxy sous la forme typename_id. /// Retourne un Tuple de Set, Guid représeantant l'objet. /// Provoque une exception si s ne répond pas au format demandé, /// si le type demandé n'est pas représenté dans le context, /// si context est null. /// </summary> public static Tuple <Type, Guid> BaseObjectRepresentation(ShContext context, string s) { if (context == null) { throw new ArgumentNullException("context"); } if (string.IsNullOrWhiteSpace(s) || !s.Contains("_")) { throw new Exception("s ne répond pas au format typename_id"); } string[] _elements = s.Split('_'); if (_elements.Length != 2 || string.IsNullOrWhiteSpace(_elements[0]) || string.IsNullOrWhiteSpace(_elements[1])) { throw new Exception("s ne répond pas au format typename_id"); } Set _set = context.GetSet(_elements[0]); if (_set == null) { throw new Exception("Le type " + _elements[0] + " n'est pas représenté dans le context"); } Guid _guid; if (!Guid.TryParse(_elements[1], out _guid)) { throw new Exception("La chaine " + _elements[1] + "ne représente pas un Guid valide"); } return(new Tuple <Type, Guid>(_set.Type, _guid)); }
public static ClassProxy ClassProxyFactory(ShContext context, ref ClassProxy proxy, Type t, Guid id) { if (proxy == null) { return(new ClassProxy(context, t, id));// appellera cette fonction à nouveau. } proxy.Context = context; proxy.Type = t; if (proxy.ID == Guid.Empty) { proxy.ID = id; } foreach (PropertyInfo _pr in t.GetProperties()) { if (PropertyHelper.IsMappableProperty(_pr)) { proxy.SetProperty(_pr.Name, PropertyProxyFactory(context, _pr, proxy)); } } return(proxy); }
public PropertyProxy(ShContext context, PropertyInfo prInfo, ClassProxy parent) : base(context) { PropertyInfo = prInfo; Parent = parent; }
public PropertyProxy(ShContext context) : base(context) { }
public Proxy(ShContext context) { Context = context; }