每个自定义属性是否需要单独的 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 解析,因此您必须有一个包含所有自定义属性的单例。
代码对于适配器提供者来说似乎很简单,像这样:
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 解析,因此您必须有一个包含所有自定义属性的单例。