7
在ASP.NET MVC的哪裏可以獲得對實例化的ResourceProviderFactory的引用,以執行屬性注入來添加自定義數據庫實現以從中檢索資源?自定義ResourceProviderFactory依賴注入
我有一個自定義資源提供程序正在加載,但我想知道是否有替代使用靜態DI容器注入提供程序內的依賴關係。
與您如何爲MVC中的角色和成員資格提供程序注入類似。
在ASP.NET MVC的哪裏可以獲得對實例化的ResourceProviderFactory的引用,以執行屬性注入來添加自定義數據庫實現以從中檢索資源?自定義ResourceProviderFactory依賴注入
我有一個自定義資源提供程序正在加載,但我想知道是否有替代使用靜態DI容器注入提供程序內的依賴關係。
與您如何爲MVC中的角色和成員資格提供程序注入類似。
訣竅是將基礎設施組件調用實現爲MVC的DependencyResolver.Current
,因此您可以使用您最喜愛的DI容器註冊真實的ResourceProviderFactory
。
這裏有這樣一類是會做的伎倆:
public class MvcResourceProviderFactory : ResourceProviderFactory
{
public override IResourceProvider CreateGlobalResourceProvider(
string classKey)
{
return GetFactory().CreateGlobalResourceProvider(classKey);
}
public override IResourceProvider CreateLocalResourceProvider(
string virtualPath)
{
return GetFactory().CreateLocalResourceProvider(virtualPath);
}
private static ResourceProviderFactory GetFactory()
{
var resolver = DependencyResolver.Current;
var factory = resolver.GetService<ResourceProviderFactory>();
if (factory != null)
{
return factory;
}
throw new InvalidOperationException(string.Format(
"No {0} has been registered in the {1}.",
typeof(ResourceProviderFactory).FullName,
DependencyResolver.Current.GetType().FullName));
}
}
這個類可以被配置如下:
<globalization
resourceProviderFactoryType="MyApp.MvcResourceProviderFactory, MyApp"
enableClientBasedCulture="true" uiCulture="auto" culture="auto"
/>
我給你這個正確的答案,因爲它回答了這個問題。我意識到這種方法實現我正在尋找的東西,但我更感興趣的是,如果有另一種方法來處理依賴注入,而不是使用我目前正在使用的上述方法。 – Trotts
我一直在努力與此一段時間,我發現,最好的方法,好或壞... – retslig