using System;
using System.Reflection;
using System.Globalization;
class MainClass
{
public static void Main()
{
ListAssemblies();
string name1 = "System.Data, Version=2.0.0.0," +"Culture=neutral, PublicKeyToken=b77a5c561934e089";
Assembly a1 = Assembly.Load(name1);
AssemblyName name2 = new AssemblyName();
name2.Name = "System.Xml";
name2.Version = new Version(2, 0, 0, 0);
name2.CultureInfo = new CultureInfo(""); //Neutral culture.
name2.SetPublicKeyToken(new byte[] {0xb7, 0x7a, 0x5c, 0x56, 0x19, 0x34, 0xe0, 0x89});
Assembly a2 = Assembly.Load(name2);
Assembly a3 = Assembly.Load("SomeAssembly");
Assembly a4 = Assembly.LoadFrom(@"c:sharedMySharedAssembly.dll");
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly a in assemblies)
{
Console.WriteLine(a.GetName());
}
}
}
Reflection
System.Activator
using System;
using System.Reflection;
class AbstractFactory
{
public IReflect CreateObject(string classname)
{
IReflect objreflect;
try
{
System.Type oType = System.Type.GetType(classname,true);
objreflect = (IReflect)System.Activator.CreateInstance(oType);
}
catch(TypeLoadException e)
{
throw new InvalidOperationException("Type could " +
"not be created. Check innerException " +
"for details", e);
}
return objreflect;
}
};
public interface IReflect
{
string Name { get; }
};
class Reflect1 : IReflect
{
public string Name
{
get { return "Reflect 1"; }
}
};
class Reflect2 : IReflect{
public string Name {
get { return "Reflect 2"; }
}
}
class AbstractFactoryApp
{
static void Main(string[] args) {
callReflection(args[0]);
}
static void callReflection(string strClassName) {
IReflect objReflect;
AbstractFactory objFactory = new AbstractFactory();
try
{
objReflect = objFactory.CreateObject(strClassName);
Console.WriteLine("You constructed a {0} object",objReflect.Name);
} catch(Exception e) {
Console.WriteLine("ERROR: {0}
{1}", e.Message, (null == e.InnerException ? "" : e.InnerException.Message));
}
}
}