Пример #1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="prefix"></param>
        /// <param name="tag"></param>
        /// <param name="ns"></param>
        /// <returns></returns>
        public static Element GetElement(string prefix, string tag, string ns)
        {
            if (ns == null)
                ns = "";

            ElementType et = new ElementType(tag, ns);
            System.Type t = (System.Type) m_table[et.ToString()];

            Element ret;
            if (t != null)
                ret = (Element) System.Activator.CreateInstance(t);
            else
                ret = new Element(tag);

            ret.Prefix = prefix;

            if (ns!="")
                ret.Namespace = ns;

            return ret;
        }
Пример #2
0
 /// <summary>
 /// Adds new Element Types to the Hashtable
 /// Use this function also to register your own created Elements.
 /// If a element is already registered it gets overwritten. This behaviour is also useful if you you want to overwrite
 /// classes and add your own derived classes to the factory.
 /// </summary>
 /// <param name="tag">FQN</param>
 /// <param name="ns"></param>
 /// <param name="t"></param>
 public static void AddElementType(string tag, string ns, System.Type t)
 {
     ElementType et = new ElementType(tag, ns);
     string key = et.ToString();
     // added thread safety on a user request
     lock (m_table)
     {
         if (m_table.ContainsKey(key))
             m_table[key] = t;
         else
             m_table.Add(et.ToString(), t);
     }
 }