日期:2014-05-17  浏览次数:20833 次

传进来一个动物,如果它是猫就return new 猫();是狗就return new 狗();
怎么做?
不要用typeof,因为要列举的太多了
C#初学,java里头可以用反射做。。。

------解决方案--------------------
C#也可以使用反射来做
------解决方案--------------------
string animal = "cat";
object a = Activator.CreateInstance(animal);
return a;
------解决方案--------------------
设计模式里的工厂模式专门解决你这个问题!请自行查阅"工厂模式"
------解决方案--------------------
探讨
设计模式里的工厂模式专门解决你这个问题!请自行查阅"工厂模式"

------解决方案--------------------
C# code

public abstract class Animal
{
     public abstract string AnimalType {get;}
     public override string ToString(){ return AnimalType; }
//...
//...
//...
}

public class Cat:Animal
{
   public override string AnimalType
  {
     get{ return "Cat";}
  }
}

public class Dog:Animal
{
   public override string AnimalType
  {
     get{return "Dog";}
  }
}


..
..
..

public class EnterClass
{
  public static void Main(string[] argv)
  {
      //      ...
      //start foreach animal in animals
      Console.WriteLine(animal.ToString());
      //end foreach
  }
}

------解决方案--------------------
用泛型:

C# code
class AnimalBuilder
{
    static public T Create<T>(T refobj) where T : new()
    { return new T(); }
}