инициализировать класс строковой переменной в c #? - PullRequest
5 голосов
/ 10 августа 2009

возможно ли инициализировать класс строковой переменной? У меня есть код на PHP.

<?php
  $classname = "test";

  $oTest = new $classname();

  class test{
  }
?>

как мне это сделать в c #?

Ответы [ 3 ]

19 голосов
/ 10 августа 2009
System.Activator.CreateInstance(Type.GetType(className))

Однако проблема в том, что C # 3.0 является языком статической типизации. Вы не можете просто вызывать случайные методы для возвращаемого объекта. У вас могут быть классы, которые вы можете создать, реализовать некоторый общий интерфейс и привести результат вышеприведенного выражения к интерфейсу или вручную использовать отражение для вызова методов возвращаемого объекта.

5 голосов
/ 10 августа 2009

Вы можете использовать метод Activator.CreateInstance для достижения аналогичного результата. Но вы должны будете указать имя сборки в дополнение к полному имени типа

var instance = Activator.CreateInstance("SomeAssemblyName","Some.Full.Type.Test");
1 голос
/ 10 августа 2009

Вы можете использовать Activator.CreateInstance. Документация по различным перегрузкам находится здесь: http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx

...