У меня есть метод, который определяет конкретный тип для создания экземпляра для абстрактного типа на основе значения свойства:
private static Type GetModelType(ControllerContext controllerContext,
ModelBindingContext bindingContext, Type modelType)
{
if (modelType != typeof(MyAbstractClass)) return modelType;
var key = "MyAbstractClass.ConcreteTypeEnum";
if (bindingContext.ValueProvider.ContainsPrefix(key))
{
var concreteTypeName = bindingContext.ValueProvider.GetValue(key).AttemptedValue;
modelType = Type.GetType(
$"{modelType.Namespace}.{concreteTypeName}, {modelType.Assembly}" );
}
}
return modelType;
}
Как я могу (возможно, с помощью отражения) определить имя свойства"MyAbstractClass.ConcreteTypeEnum"
без использования строки, чтобы найти ее?Если кто-то переименовывает свойство, я не хочу, чтобы привязка моей модели нарушалась.
Я думаю о чем-то вроде
var key = modelType.GetProperty(t => t.ConcreteTypeEnum).Name
... но такого существа не существует.