Exemple de ‘System.Activator’: non édité

Author:

Charger,une,Assemblée,avec,un,nom
{filelink=17558}

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

Leave a Reply

Your email address will not be published. Required fields are marked *