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