Есть ли способ найти базовый класс из строки, переданной через вызов ajax

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

Я передаю строку типа в 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 ответ

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

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

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

Другие вопросы по тегам