Создать объект в C# без использования ключевого слова new? [закрытый]
есть ли способ создать объект без использования нового ключевого слова в C# , например class.forname(); в Java.
Я хочу динамически создать объект класса. Создание объекта может зависеть от ввода пользователя.
У меня есть базовый класс x и есть 5 подклассов (a,b,c,d,e). Мой пользовательский ввод будет a или b или...е имена классов. Используя это, мне нужно создать объект этого класса.Как это сделать
5 ответов
можно использовать активатор класс.
Type type = typeof(MyClass);
object[] parameters = new object[]{1, "hello", "world" };
object obj = Activator.CreateInstance(type, parameters);
MyClass myClass = obj as MyClass;
вы имеете в виду статический класс?
static class Foo
{
public static void Bar()
{
Console.WriteLine("Foo.Bar()");
}
}
затем вы можете позвонить Foo.Bar();
.
но вам лучше объяснить, что вы пытаетесь сделать. "Создание объекта без использования new
" это решение, которое вы придумали для вас проблемы. Простое объяснение этой проблемы может открыть более простой способ ее решения.
Edit: кажется, вам нужен завод, учитывая ваш комментарий " Я хочу динамически создавать объект класса. Создание объекта может зависеть от ввода пользователя".
что-то вроде этого может быть достаточно:
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 { }
бросание интерфейса или абстрактного класса, где это необходимо.
класс Activator очень медленно, вы можете использовать лямбда-выражения в активатор альтернатива
можно использовать default
ключевое слово, но это приведет лишь к экземпляру для типов значений:
var s = default(string); // null
var i = default(int); // integer (0)