Mega Code Archive

 
Categories / C# / 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}\n{1}", e.Message, (null == e.InnerException ? "" : e.InnerException.Message));         }     } }