2013-03-19 39 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