Есть ли способ найти базовый класс из строки, переданной через вызов ajax - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь создать динамический способ разблокировать записи в этой базе данных по истечении времени.Передается строка, которая является именем типа.

Я передаю строку типа в JsonResult, эта строка содержит имя класса, из которого я хотел бы создать тип.Затем я хочу создать GenericRepository из типа, который я только что создал.

Я получаю сообщение об ошибке 'type1' - переменная, но используется как тип.Это возможный сценарий?

public JsonResult UnlockRecord(string modelType)
    {


        Type type1 = Type.GetType(modelType);

        GenericRepository<type1> typeRepository = new GenericRepository<type1>();
        type1 lockedRecord = typeRepository.GetFirst();
        typeRepository.BatchUnlock(type1.Id);

        return Json(null);
    }

1 Ответ

0 голосов
/ 25 октября 2018

Я думаю, вы хотите создать универсальный тип.Вы сделаете это с помощью отражения, используя MakeGenericType и Activator.CreateInstance

var repoType = typeof(GenericRepository<>).MakeGenericType(Type.GetType(typeName));
var repo = Activator.CreateInstance(repoType);

Если в вашем хранилище есть аргументы конструктора, вам также необходимо их передать.

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