Ejemplo n.º 1
0
        /// <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));
        }
Ejemplo n.º 2
0
        /// <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));
        }