CurrentDomain, GetAssemblies

   
  


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

   
     


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