Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Product Architecture
Message
From
10/02/2009 13:39:07
Mike Cole
Yellow Lab Technologies
Stanley, Iowa, United States
 
 
To
10/02/2009 11:27:12
General information
Forum:
ASP.NET
Category:
Other
Environment versions
Environment:
ASP.NET
Miscellaneous
Thread ID:
01379573
Message ID:
01380619
Views:
38
>>Thanks for the code. It's nice to be able to copy and paste it without translating it.
>
>haha ... you're welcome! =0)
>
>>It seems oReflection.InstantiateClass is passing back a null value. I suspect it has something to do with the assembly and classname parameters I am passing in. Would the assembly parameter be the path to the .dll file?
>
>Sorry for the late reply (busy training a new guy yesterday), and you seem to have found another solution (I see a later post from you along those lines) ... however, I'll see if I can address the question anyway.
>
>Yes, the assembly should contain the full path to the DLL file and if you didn't include it, I'm sure that's what the problem is. The Message parameter should have contained exactly what the error was. As I mentioned, the class I posted was a simplified version of what I actually use in our apps (there's additional code in my real version for determining the file path, but it's specific to the way our apps do things and doesn't translate well to generalities <g>), but perhaps I should have put a comment in the posted code about the path.
>
>Sorry!!

No problem, thanks a ton. I might come back to this if my proof of concept works as planned.

>~~Bonnie
>
>
>
>
>>
>>>Hi Mike,
>>>
>>>I've posted this before, but I didn't bother searching for the post. Here's a repeat:
>>>
>>>Below is a simplified version of my Reflection class (other things could be added to it, for example allowing parameters to be passed).
>>>
>>>It's easy to use too. Here's one way to use it:
>>>
>>>MyReflectionClass oReflection = new MyReflectionClass(assembly, classname);
>>>string message = "";
>>>object o = oReflection.InstantiateClass(ref message);
>>>if (message != "")
>>>	MessageBox.Show(message);
>>>else
>>>{
>>>	// go on with your processing
>>>}
>>>
>>>
>>>And here's the simplified class:
>>>
>>>
>>>public class MyReflectionClass
>>>{
>>>	#region Declarations
>>>	private string m_AssemblyName;
>>>	private string m_ClassName;
>>>	#endregion
>>>
>>>	#region Constructors
>>>	public MyReflectionClass()
>>>	{
>>>	}
>>>	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
>>>}
>>>
>>>
>>>~~Bonnie
Very fitting: http://xkcd.com/386/
Previous
Reply
Map
View

Click here to load this message in the networking platform