在C#中有没有一种方法可以在不使用new关键字的情况下创建一个对象,就像Java中的class.forname();
我想动态地创建一个类的对象。对象的创建可能取决于用户的输入。
我有一个基类x,它有5个子类(a、b、c、d、e)。我的用户输入将是a或b或...e类名。使用这个输入,我需要创建那个类的一个对象。我该怎么做?
在C#中有没有一种方法可以在不使用new关键字的情况下创建一个对象,就像Java中的class.forname();
我想动态地创建一个类的对象。对象的创建可能取决于用户的输入。
我有一个基类x,它有5个子类(a、b、c、d、e)。我的用户输入将是a或b或...e类名。使用这个输入,我需要创建那个类的一个对象。我该怎么做?
你可以使用Activator类。
Type type = typeof(MyClass);
object[] parameters = new object[]{1, "hello", "world" };
object obj = Activator.CreateInstance(type, parameters);
MyClass myClass = obj as MyClass;
new
操作符而使用。 - Marc Gravellnew
关键字。 :P - CodeCasterstatic class Foo
{
public static void Bar()
{
Console.WriteLine("Foo.Bar()");
}
}
Foo.Bar();
。new
"是您针对正在遇到的问题想出来的一个解决方案。仅仅解释该问题可能会揭示更简单的解决方法。static class PizzaFactory
{
static Pizza CreatePizza(String topping)
{
if (topping == "cheese")
{
return new CheesePizza();
}
else if (topping == "salami")
{
return new SalamiPizza();
}
}
}
class Pizza { }
class CheesePizza : Pizza { }
class SalamiPizza : Pizza { }
必要时添加接口或抽象类。
你可以使用 default
关键字,但它只会对值类型返回一个实例:
var s = default(string); // null
var i = default(int); // integer (0)
你也许可以用以下方式实现
typeof(MyType)