Преобразовать строковый параметр в тип объекта - PullRequest
1 голос
/ 18 декабря 2009

Рассмотрим следующий код:

public ActionResult GenericActionForSomething(string objectType)
    {
        switch (objectType)
        {
            case "Business":
                // Do Something with object here, like save
                _db.Create<Business>();
                break;
        }

        return View();
    }

Как я могу преобразовать строковый параметр в объект? Для этого примера мне нужно преобразовать параметр «objectType» в объект типа «Бизнес». Любые идеи очень приветствуются.

Ответы [ 4 ]

2 голосов
/ 18 декабря 2009

Вы можете создать экземпляр объекта на основе имени его типа, используя Activator.CreateInstance . Для этой конкретной перегрузки метода вам также необходимо указать имя сборки; для этого вам могут пригодиться методы Assembly class ' GetExecutingAssembly и GetCallingAssembly .

0 голосов
/ 18 декабря 2009

Вам нужно использовать отражение, чтобы достичь этого. Вы можете либо использовать метод Activator.CreateInstance(className), либо сначала загрузить Assemply, содержащий ваш тип, а затем вызвать метод CreateInstance () следующим образом:

Assembly assem = Assembly.Load(assemblyName);
Object obj = assem.CreateInstance(className);
0 голосов
/ 18 декабря 2009

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

public ViewResult NewBusiness(Business business)
{
    _db.Create<Business>(business);
    return View();
}

Прочитайте общий обзор привязки модели в этой статье .

0 голосов
/ 18 декабря 2009

Нет единственного способа сделать это. Если у вашего Business класса есть конструктор, который принимает string, вы можете вызвать его. Если у него есть явный оператор преобразования, вы также можете использовать его. Если с ним связан TypeConverter, используйте его тоже.

Ваш вопрос слишком широкий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...