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