Получить ModelMetadata для класса в.NET Core
В Entity Framework 6 я мог получить ModelMetadata для класса (myModel) следующим образом:
var modelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, myModel.GetType());
Как я могу сделать то же самое в.net core 1.1.1?
1 ответ
В ASP.NET Core 3.0 есть EmptyModelMetadataProvider
класс, который реализует DefaultModelMetadataProvider
который реализует ModelMetadataProvider
что абстрактно. Мы можем просто создать экземплярEmptyModelMetadataProvider
и позвони GetMetadataForType(typeof(MyModel))
и он вернет необходимые метаданные. В частности, я использую этот ответ для тестирования привязки пользовательской модели.
ModelMetadataProvider - это функция ASP.NET, которая не имеет ничего общего с Entity Framework. В ASP.NET Core вы можете легко ввести значение по умолчанию IModelMetadataProvider
Реализация с использованием встроенного DI:
public FooController(IModelMetadataProvider provider)
{
var metadata = provider.GetMetadataForType(typeof(model));
}