>>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();
>>>
>>>