Привязка модели Asp.net mvc - приведение от конкретного типа к типу, созданному с использованием отражения - PullRequest
1 голос
/ 26 июня 2011

Я хочу получить модель во время BindModel и привести ее к типу, указанному в bindingContext:

var reportFormTypeName = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".TableInputModelTypeName");

Type reportFormType = Type.GetType("MyNameSpace.ViewModels." + reportFormTypeName.AttemptedValue);

var model = (reportFormType)bindingContext.ModelMetadata.Model;

Однако это не сработает - я полагаю, что это простая вещь для размышления, которую я не могу уладить своим уставшим мозгом - у кого-нибудь есть какие-то подсказки?

:)

Ответы [ 2 ]

1 голос
/ 26 июня 2011

Вам нужно создать его экземпляр:

var reportFormTypeName = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".TableInputModelTypeName");
Type reportFormType = Type.GetType("MyNameSpace.ViewModels." + reportFormTypeName.AttemptedValue);
var model = Activator.CreateInstance(reportFormType);
0 голосов
/ 26 июня 2011

Вы не можете этого сделать.Вы просите компилятор работать с типом, который известен только во время выполнения, что просто невозможно.Если вы знаете тип во время компиляции, просто приведите его.Если нет, как вы собираетесь работать с ним?

...