/// <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 = string.Empty; } var et = new ElementType(tag, ns); var key = et.ToString(); Element ret; if (m_table.ContainsKey(key)) { ret = (Element) Activator.CreateInstance(m_table[key]); } else { ret = new Element(tag); } ret.Prefix = prefix; if (ns != string.Empty) { ret.Namespace = ns; } return ret; }
/// <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 = string.Empty; } var et = new ElementType(tag, ns); var t = (Type) m_table[et.ToString()]; Element ret; if (t != null) { ret = (Element) Activator.CreateInstance(t); } else { ret = new Element(tag); } ret.Prefix = prefix; if (ns != string.Empty) { ret.Namespace = ns; } return ret; }
/// <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, Type t) { var et = new ElementType(tag, ns); string key = et.ToString(); // added thread safety on a user request lock (m_table) { m_table[key] = t; } }
/// <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, Type t) { var 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); } } }