Можно ли инициализировать класс строковой переменной? У меня код на PHP.инициализировать класс строковой переменной в C#?
<?php
$classname = "test";
$oTest = new $classname();
class test{
}
?>
как это сделать в C#?
Можно ли инициализировать класс строковой переменной? У меня код на PHP.инициализировать класс строковой переменной в C#?
<?php
$classname = "test";
$oTest = new $classname();
class test{
}
?>
как это сделать в C#?
System.Activator.CreateInstance(Type.GetType(className))
Проблема, однако, в том, что C# 3.0 является статически типизированным языком. Вы не можете просто вызвать случайные методы для возвращаемого объекта. Вы можете иметь классы, которые вы могли бы создать, реализовать некоторый общий интерфейс и передать результат вышеупомянутого выражения в интерфейс или вручную использовать отражение для вызова методов на возвращаемом объекте.
Видя ответ, я помог мне разобраться в этом вопросе. +1 –
Что вы подразумеваете под «C#, с версии 3.0 является статически типизированным языком». Это говорит о том, что он только недавно стал статически типизированным языком. Это всегда было. В C# 4.0 есть новое динамическое ключевое слово, что означает, что C# при желании получит некоторые аспекты динамических языков. –
Колин: Я мог бы сформулировать это неоднозначно. Исправлена. –
Вы можете использовать метод Activator.CreateInstance для достижения аналогичного результата. Но вы должны будете предоставить имя сборки в дополнении к полностью квалифицированному имени типа
var instance = Activator.CreateInstance("SomeAssemblyName","Some.Full.Type.Test");
Вы можете использовать Activator.CreateInstance. Документация для различных перегрузок находится здесь: http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx
Я думаю, что JaredPar отвечает на ваш вопрос, однако зачем вам это нужно? Что вы пытаетесь решить? – Zyphrax