Я пытаюсь настроить следующий код:
Контроллер
[HttpGet]
public ActionResult LoadReport(string actionName, string reportInput, string reportCriteria)
{
var type = Assembly.Load("Company.TaxCollection.Reports").GetTypes().First(t => t.Name == reportInput);
var typeCriteria = Assembly.Load("Company.TaxCollection.Reports").GetTypes().First(t => t.Name == reportInput + "Criteria");
var reportObject = Activator.CreateInstance(type);
var reportObjectCriteria = Activator.CreateInstance(typeCriteria);
IEnumerable<ReportCriteria> reportList = getReportCriteria(reportObject);
foreach (ReportCriteria r in reportList)
{
reportObjectCriteria t = (reportObjectCriteria)r;
}
return Json(Url.Action(actionName, "Reports", reportList.Where(x => x.CriteriaName == reportCriteria)));
}
Я получаю ошибку reportObjectCriteria is a variable but is used like a type
в пределах foreach l oop.
Я также пытался не использовать переменную и просто использовать Activator.CreateInstance напрямую, но это тоже не сработало.
foreach (ReportCriteria r in reportList)
{
Activator.CreateInstance(typeCriteria) t =
(Activator.CreateInstance(typeCriteria)) r;
}
Цель этих строк кода - привести Объект ReportCriteria динамически передается другому типу во время выполнения. Тип объекта для преобразования определяется параметром reportInput в контроллере.