2

服务栈版本:3.9.43

我正在使用内置的 IoC 容器和内置的 FluentValidation。我使用对它们所在的程序集的引用来注册我的验证器:

Plugins.Add(new ValidationFeature());
container.RegisterValidators(typeof(Foo).Assembly);

根据IoC 文档,我希望我的验证器只实例化一次。不幸的是,它们的生命周期似乎是请求范围的,并且我会为每个请求创建一个新的集合,这很昂贵。

鉴于验证器是线程安全的,是否有理由RegisterValidators这样做?如果没有,将我的验证器注册为单例的推荐方法是什么。

4

1 回答 1

1

我刚刚向 RegisterValidators 提交了一个重载,它允许您指定 FluentValidation 验证器在. 您现在可以指定一个单例范围:

container.RegisterValidators(ReuseScope.Hierarchy, typeof(Foo).Assembly);

注意:只有在您的验证器不使用一次性资源(例如数据库、数据存储/网络连接)时,您才希望这样做。

在 ServiceStack v3.9.53+ 的下一版本中的 NuGet 上可用。

于 2013-06-17T19:59:25.743 回答