>>>public void AddElement(string ElementName) >>>{ >>> int elementNo = 0; >>> >>> // Assuming you already know the assembly name, or it can be another parameter >>> MyReflectionClass oReflection = new MyReflectionClass(assembly, ElementName); >>> string message = ""; >>> IElement o = oReflection.InstantiateClass(ref message) as IElement >>> if (o != null) >>> { >>> // where ElementMethods is part of your IElement interface >>> o.ElementMethods += new ElementMethodsDelegate(element_ElementMethods); >>> // etc.etc. >>> } >>>} >>>>>>
>>>public class MyReflectionClass >>>{ >>> #region Declarations >>> private string m_AssemblyName; >>> private string m_ClassName; >>> #endregion >>> >>> #region Constructors >>> public MyReflectionClass() >>> { >>> } >>> /// Make sure that you have either included the full path to your Assembly file >>> /// or that you modify this class to include code for obtaining the full path >>> public MyReflectionClass(string assemblyName, string className) >>> { >>> this.AssemblyName = assemblyName; >>> this.ClassName = className; >>> } >>> #endregion >>> >>> #region Methods >>> >>> public Assembly LoadAssembly(ref string Message) >>> { >>> Assembly oAssembly = null; >>> >>> try >>> { >>> oAssembly = Assembly.LoadFrom(this.m_AssemblyName + ".DLL"); >>> } >>> catch (System.IO.FileNotFoundException) >>> { >>> Message = this.m_AssemblyName + " could not be found at the specified URL!" + (char)13 + (char)13 + >>> "Check that you have correctly entered the component URL and that your network or Internet " + >>> "connection is functioning correctly."; >>> return oAssembly; >>> } >>> catch (System.BadImageFormatException) >>> { >>> Message = this.m_AssemblyName + " is invalid or damaged!" + (char)13 + (char)13 + >>> "Contact your system administrator."; >>> return oAssembly; >>> } >>> catch (System.Exception ex) >>> { >>> Message = ex.Message; >>> return oAssembly; >>> } >>> >>> return oAssembly; >>> } >>> >>> public object InstantiateClass(ref string Message) >>> { >>> Assembly oAssembly = null; >>> return this.InstantiateClass(ref oAssembly, ref Message); >>> } >>> public object InstantiateClass(ref Assembly oAssembly, ref string Message) >>> { >>> object oClass = null; >>> if (oAssembly == null || oAssembly.FullName.Contains(this.m_AssemblyName) == false) >>> oAssembly = this.LoadAssembly(ref Message); >>> >>> try >>> { >>> // Create an instance of the desired type from the assembly >>> if (oAssembly != null) >>> oClass = oAssembly.CreateInstance(this.m_ClassName); >>> } >>> catch (Exception ex) >>> { >>> Message = ex.Message; >>> return oClass; >>> } >>> >>> return oClass; >>> } >>> >>> #endregion >>> >>> #region Properties >>> public string AssemblyName >>> { >>> get { return this.m_AssemblyName; } >>> set >>> { >>> this.m_AssemblyName = value.Trim(); >>> if (this.m_AssemblyName.ToUpper().EndsWith(".DLL", true, null)) >>> this.m_AssemblyName = this.m_AssemblyName.Remove(this.m_AssemblyName.Length - 4); >>> } >>> } >>> public string ClassName >>> { >>> get { return this.m_ClassName; } >>> set >>> { >>> this.m_ClassName = value.Trim(); >>> if (this.m_ClassName.Contains(this.m_AssemblyName) == false) >>> this.m_ClassName = this.m_AssemblyName + "." + this.m_ClassName; >>> } >>> } >>> #endregion >>>} >>>>>>
>>>> public void AddElement(object newElement, Enums.ElementType t) >>>> { >>>> int elementNo = 0; >>>> switch (t) >>>> { >>>> case Enums.ElementType.Bit: >>>> Bit element = new Bit(); >>>> element.Location = this._ConnectionPoint; >>>> element.ElementMethods += new ElementMethodsDelegate(element_ElementMethods); >>>> foreach (Control c in this.Controls) >>>> { >>>> if (c.GetType().Equals(typeof(Bit))) >>>> { >>>> element.Left = c.Right; >>>> elementNo++; >>>> } >>>> } >>>> element.ElementNumber = elementNo; >>>> this.Controls.Add(element); >>>> Elements.Insert(Elements.Count - 1, element); >>>> break; >>>> >>>> } >>>> >>>> this.Controls.Clear(); >>>> int numElement = 0; >>>> int right = 0; >>>> foreach (Control c in Elements) >>>> { >>>> Bit b = (Bit)c; >>>> b.ElementNumber = numElement; >>>> b.Left = right; >>>> this.Controls.Add(b); >>>> numElement++; >>>> right = b.Right; >>>> } >>>> } >>>> >>>>>>>>
>>>>Bit element = new Bit();
>>>>
>>>>>>>>newElement.Name element = new newElement.Name();
>>>>
>>>>