获取.NET Core中的类的ModelMetadata

时间:2017-03-30 20:46:50

标签: asp.net asp.net-core modelmetadata modelmetadataprovider

在Entity Framework 6中,我可以像这样获取类(myModel)的ModelMetadata:

var modelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, myModel.GetType());

我怎样才能在.net核心1.1.1中做同样的事情?

2 个答案:

答案 0 :(得分:5)

ModelMetadataProvider是一个ASP.NET功能,它与Entity Framework无关。在ASP.NET Core中,您可以使用内置的DI轻松注入默认的IModelMetadataProvider实现:

public FooController(IModelMetadataProvider provider) 
{
    var metadata = provider.GetMetadataForType(typeof(model));
}

答案 1 :(得分:0)

在ASP.NET Core 3.0中,有一个EmptyModelMetadataProvider类,该类实现了DefaultModelMetadataProvider,该类实现了抽象的ModelMetadataProvider。我们能够简单地实例化EmptyModelMetadataProvider并调用GetMetadataForType(typeof(MyModel)),它将返回所需的元数据。我对此答案的特殊用途是测试自定义模型绑定程序。