I'm developing a multi-language web site. My solution for displaying multilanguage texts, based on following LocalizedDisplayAttribute class. I would like to inject some dependency to this class.But the class is instantiated by .Net Framework. How container inject dependency without using service locator?
Here is my code block
[AttributeUsage(AttributeTargets.All)]
public class LocalizedDisplayAttribute : DisplayNameAttribute
{
public MultilanguageKeys Key { get; set; }
public IMultilanguageManager MultilanguageManager { get; set; }
public LocalizedDisplayAttribute(IMultilanguageManager multilanguageManager)
{
this.MultilanguageManager = multilanguageManager;
}
public override string DisplayName
{
get
{
// Run some business
return GetCustomAttribute(Key);
}
}
private string GetCustomAttribute(MultilanguageKeys key)
{
int multiLanguageId = 3;
MultiLanguageDictionaryInfo multiLanguageDictionary = MultilanguageManager.DictionaryList()
.Where(t => t.Key == key.ToString())
.Where(t => t.MultilanguageId == multiLanguageId)
.FirstOrDefault();
return multiLanguageDictionary.Value;
}
}