2009-08-09 3 views
5

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

<?php 
    $classname = "test"; 

    $oTest = new $classname(); 

    class test{ 
    } 
?> 

как это сделать в C#?

+0

Я думаю, что JaredPar отвечает на ваш вопрос, однако зачем вам это нужно? Что вы пытаетесь решить? – Zyphrax

ответ

19
System.Activator.CreateInstance(Type.GetType(className)) 

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

+1

Видя ответ, я помог мне разобраться в этом вопросе. +1 –

+0

Что вы подразумеваете под «C#, с версии 3.0 является статически типизированным языком». Это говорит о том, что он только недавно стал статически типизированным языком. Это всегда было. В C# 4.0 есть новое динамическое ключевое слово, что означает, что C# при желании получит некоторые аспекты динамических языков. –

+0

Колин: Я мог бы сформулировать это неоднозначно. Исправлена. –

5

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

var instance = Activator.CreateInstance("SomeAssemblyName","Some.Full.Type.Test"); 
Смежные вопросы