C#反射机制与简单工厂结合使用

反射机制怎么与简单工厂模式结合使用,通过反射实现在添加实现类得时候,
不需要工厂里的if判断或者switch判断

namespace Animal
{
        interface ISpeak
        {
                void Speak();
        }
        public class Dog:ISpeak
        {
                void Speak()
                {
                        Console.WriteLine("wang wang wang....");
                }
        }
        public class Cat:ISpeak
        {
                void Speak()
                {
                        Console.WriteLine("miao~~");
                }
        }
}

static void Main(string[] args)
{
        Console.WriteLine("请输入您想听哪种动物叫");
        string animal = Console.ReadLine();
      ISpeak speakAnimal =  (ISpeak)Assembly.Load("Animal").CreateInstance("Animal"+animal);
        if(speakAnimal == null)
                Console.WriteLine("系统暂不认识这种动物");
        else
            speakAnimal.Speak();
}
//当你输入"Dog"的时候打印 “wang wang wang....”
//当你输入"Cat"的时候打印 “miao~~”