为.NET Core中的类获取ModelMetadata

sim*_*rth 2 asp.net modelmetadata modelmetadataprovider asp.net-core

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

var modelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, myModel.GetType());
Run Code Online (Sandbox Code Playgroud)

在.net core 1.1.1中我该怎么做?

小智 6

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


Ily*_*kov 5

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

public FooController(IModelMetadataProvider provider) 
{
    var metadata = provider.GetMetadataForType(typeof(model));
}
Run Code Online (Sandbox Code Playgroud)