このトリックは、インフラストラクチャコンポーネントの呼び出しを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