每个自定义属性是否需要单独的 IValidationAttributeAdapterProvider?

Do you need a separate IValidationAttributeAdapterProvider for each custom attribute?

代码对于适配器提供者来说似乎很简单,像这样:

public class KittensMustBeCuteAttributeAdapterProvider : IValidationAttributeAdapterProvider
{
    private readonly IValidationAttributeAdapterProvider _baseProvider = new ValidationAttributeAdapterProvider();

    public IAttributeAdapter GetAttributeAdapter(ValidationAttribute attribute, IStringLocalizer stringLocalizer)
    {
        if (attribute is KittensMustBeCuteAttribute)
        {

            return new KittensMustBeCuteAttributeAdapter(attribute as KittensMustBeCuteAttribute, stringLocalizer);
        }
        else
        {
            return _baseProvider.GetAttributeAdapter(attribute, stringLocalizer);
        }
    }
}

在我看来,我可以将此适配器提供程序重命名为通用的,并将其用于我的所有自定义属性,因为我有几个(不仅仅是 KittensMustBeCuteAttribute)。

但是我找不到任何表明这是否可以或您是否需要一个的任何信息。我见过的所有示例都像我一样命名,特定于属性。

我可以通过扩展我的 if 语句来重复使用一个 AdapterProvider 吗?

看来我应该继续下去,后来很明显适配器提供程序被注册为单例,要通过 DI 解析,因此您必须有一个包含所有自定义属性的单例。