我们在代码中使用了很多泛型。例如ICommandHandler<T> where T is ICommand
,ICommandValidator<T>
等等等等
并非所有东西都有 ICommandValidator 实现。我一直在寻找使用 NullObject 模式,以便我可以提供一个回退选项以避免必须测试验证器是否为空。
例如
public class NullObjectCommandValidator : ICommandValidator<ICommand>
{
public bool IsValid(ICommand command)
{
return true;
}
}
我们都像这样注册:
builder.RegisterAssemblyTypes(assemblies)
.AsClosedTypesOf(typeof(ICommandValidator<>))
.InstancePerHttpRequest();
我希望能够将 NullObjectCommandValidator 注册为任何没有具体实现的 ICommandValidator 的默认值,这些 ICommandValidator 使用注册所有其他 ICommandValidators<> 等过程,然后在最后注册 Null 版本并保留现有默认值。
这样的事情可能吗?