Создать экземпляр объекта класса с его именем в строковой переменной
Я не знаю, что то, что я прошу, доступно или нет, но я просто хочу знать, существует ли оно и как оно работает. Итак, вот мой вопрос:
У меня есть собственный класс пользовательских моделей. Например, клиент, Сотрудник и продукт. Теперь у меня есть имя класса в строке. и на основе имя класса, входящее в строку, я должен создать его объект и вернитесь к VIEW. Как я мог достичь этого?
Я знаю вариант оператора IF ELSE
, но хочу попробовать лучше, Динамический "способ...
Ответы
Ответ 1
Наличие имени класса в строке недостаточно, чтобы создать свой экземпляр.
На самом деле вам понадобится полное пространство имен, включая имя класса, для создания объекта.
Предполагая, что у вас есть следующее:
string className = "MyClass";
string namespaceName = "MyNamespace.MyInternalNamespace";
Чем вы можете создать экземпляр этого класса, объект класса MyNamespace.MyInternalNamespace.MyClass
, используя любой из следующих методов:
var myObj = Activator.CreateInstance(namespaceName, className);
или это:
var myObj = Activator.CreateInstance(Type.GetType(namespaceName + "." + className));
Надеюсь, что это поможет, пожалуйста, дайте мне знать, если нет.
Ответ 2
string frmName = "frmCustomer";
//WorldCarUI. is the namespace of the form
Type CAType = Type.GetType("WorldCarUI." + frmName );
var myObj = Activator.CreateInstance(CAType);
Form nextForm2 = (Form)myObj;
nextForm2.Show();
это работает.
С уважением, Avi
Ответ 3
Самый простой способ - использовать Activator. Введите имя класса в GetType и создайте новый экземпляр.
ClassInstance s1 = (ClassInstance)Activator.CreateInstance(Type.GetType("App.ClassInstance"));
public class ClassInstance
{
public string StringData { get; set; }
}
С уважением,
Nik