0

我在哪里可以找到.Net Core 中的AssociatedMetadataProvider ?或者有没有办法在 DefaultModelMetadataProvider中实现GetTypeDescriptor ?

在 MVC 5 中,DataAnnotationsModelMetadataProvider 继承自 AssociatedMetadataProvider,它有一个 GetTypeDescriptor 方法。

似乎这个类(AssociatedMetadataProvider)被完全删除了:-(

任何建议都会非常好。


我是如何在 Mvc 5 中做到的?

    public class CustomMetadataProvider : DataAnnotationsModelMetadataProvider
{
    protected override ICustomTypeDescriptor GetTypeDescriptor(Type type)
    {
        if (WhatEver)
        { return new MyICustomTypeDescriptor();}
        return base.GetTypeDescriptor(type);
    }
}

登记:

全球.asax

 ModelMetadataProviders.Current = new CustomMetadataProvider();
4

1 回答 1

0

事实上,.Net Core 中没有AssociatedMetadataProvider。但是,它们给我们留下了您可能使用IModelMetadataProvider的抽象类ModelMetadataProvider,尤其是在您需要覆盖某些方法时。您可能还会注意到提供DefaultModelMetadataProvider了一个具有方法的实现GetMetadataForType(Type)。它会返回ModelMetadata仍然不是您需要的。但是这个类有一个被调用的方法GetModelExplorerForType(),它返回一个ModelExplorer. 这个实例应该有你需要的所有信息,格式有点不同。
我希望它有帮助:)

于 2019-12-13T16:35:21.247 回答