【问题标题】:Do you need a separate IValidationAttributeAdapterProvider for each custom attribute?您是否需要为每个自定义属性提供单独的 IValidationAttributeAdapterProvider?
【发布时间】:2019-07-23 08:52:53
【问题描述】:

对于适配器提供者来说,代码看起来很简单,如下所示:

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 吗?

【问题讨论】:

    标签: asp.net-core-mvc data-annotations


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      相关资源
      最近更新 更多