2013-03-19 53 views
0

我们刚刚开始使用FluentValidation,并且已经按照这个帖子来允许我们使用我们的全球化值:http://fluentvalidation.codeplex.com/discussions/394471FluentValidation With Autofac

但是,我们被困在如何获得包装我们现有的全球化价值观的翻译服务接口的参考。这包含在一个单独的项目中,因为它不直接与ASP.NET MVC耦合,所以我们不能使用DependencyResolver。

有谁知道一种方法,我们可以将Interface或Autofac容器放入TranslationServiceStringSource类来获取翻译的值吗?

回答

0

我假设你的地方也有类似的一些代码:

var container = builder.Build(); 
var resolver = new AutofacDependencyResolver(container); 
DependencyResolver.SetResolver(resolver); 

如果存储了参考容器的地方,我经常创建的MvcApplication类的引用(的global.asax.cs):

public static IContainer Container { get; set; } 

然后,您可以:

public TranslationServiceStringSource(string text) { 
    _text = text; 
    _translator = new MvcApplication.Container.Resolve<ITranslationService>(); 
} 

虽然这将是很好得到翻译ServiceStringSource由AutoFac管理。

+0

如果直接从容器中解析出来,实例的容量将与容器一样长(这可能是应用程序的整个生命周期) – 2013-03-20 20:01:23

+0

最后,我们创建了一个由Autofac管理的IValidationsService,它允许我们传入翻译服务在构造函数中。我们无法在MvcApplication中使用静态引用,因为它包含在单独的项目中,并且由于我们在业务规则对象上使用扩展方法来添加翻译,因此获取TranslationServiceStringSource将会非常棘手。我会给你这个尽管试图获得由autofac管理的TranslationServiceStringSource使我达到了我认为最好的方式,或者至少是我能看到的唯一方式。非常感谢您的帮助。 – user351711 2013-03-21 18:49:37