Я думаю, вы могли бы немного развязаться!
Если вы создадите такой интерфейс (например, в вашем слое BLL)
public interface IPreferredLanguage
{
String PeferredLanguage { get; set; }
}
и вы создадите две реализации:
В вашем сайте проекта:
public class WebPeferredLanguage : IPreferredLanguage
{
public String PeferredLanguage
{
get
{
return // retrieve the language from the http context
}
set
{
// set the preferred language in the HttpContext
}
}
}
В вашем проекте winforms:
public class WinformsPeferredLanguage : IPreferredLanguage
{
public String PeferredLanguage
{
get; set; // automatic properties
}
}
Здесь и далее вы используете Инверсия управления (Unity, StructureMap, MicroKernel) для настройки в вашей веб-конфигурации того, что должен использоваться экземпляр WebPeferredLanguage и в ваших winforms должен возвращаться одиночный экземпляр WinformsPeferredLanguage. *
В своем коде всякий раз, когда вам нужно знать язык, вы просто запрашиваете у контейнера IoC правильную реализацию IPreferredLanguage, и он возвращает объект настроенного вами типа.
так что в вашем bll вы можете запрограммировать (например):
public String GetEmailMessage()
{
var currentLanguage = IoC.Resolve<IPreferredLanguage>().PeferredLanguage;
return Resources[currentLanguage ].EmailMessage;
}
После написания этого я вижу, что вам нужно решение VB.NET. Ну, примеры все еще применимы, только это немного другая грамматика (извините, если так сложнее читать).