Подтвердить что ты не робот

Создать экземпляр объекта класса с его именем в строковой переменной

Я не знаю, что то, что я прошу, доступно или нет, но я просто хочу знать, существует ли оно и как оно работает. Итак, вот мой вопрос:

У меня есть собственный класс пользовательских моделей. Например, клиент, Сотрудник и продукт. Теперь у меня есть имя класса в строке. и на основе имя класса, входящее в строку, я должен создать его объект и вернитесь к VIEW. Как я мог достичь этого?

Я знаю вариант оператора IF ELSE, но хочу попробовать лучше, Динамический "способ...

4b9b3361

Ответ 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