Как получить доступ к общедоступному свойству Global.asx.cs из бизнес-класса? - PullRequest
0 голосов
/ 02 февраля 2011

У меня есть свойство в моем классе Global.asax.cs, к которому мне нужно получить доступ из бизнес-класса, т.е. используя HttpContext.Current.

Как мне это сделать?

Global.asax.cs (в веб-проекте)

public partial class Global : System.Web.HttpApplication
{



    public static ProxyGenerator Generator = new ProxyGenerator();

Бизнес класс (в отдельном бизнес-проекте)

var generator = ((Sei.Osp.Web.Global)HttpContext.Current.ApplicationInstance)

Это, очевидно, не работает, и я не хочу ссылаться на весь веб-проект в бизнес-проекте, поскольку это создаст циклическую ссылку (на бизнес-проект уже есть ссылка в веб-проекте)

UPDATE: Для пояснения - свойство, которое я создаю, содержит экземпляр класса Castle Dynamic Proxy Generator. Я читал, что вы не должны просто создавать это повсеместно. Поэтому я решил создать его в своем Global.asax.cs, а затем просто использовать этот экземпляр везде, где мне нужно, чтобы создать прокси-класс (я использую его для выполнения AOP)

Есть ли лучший способ сделать это?

Ответы [ 2 ]

2 голосов
/ 02 февраля 2011

Лучше было бы создать класс (возможно, статический) с желаемым публичным статическим свойством, а затем ссылаться на него из Global.asax.cs и вашего бизнес-класса.

Класс может находиться вваш бизнес-проект или отдельный проект, на который ссылается ваш бизнес-проект и веб-проект.

1 голос
/ 02 февраля 2011

Ваши бизнес-классы должны быть независимыми от вашего веб-сайта. Вы должны переоценить свои причины сделать это таким образом. Либо бизнес-классу на самом деле не нужен доступ к свойству, либо свойство не обязательно должно находиться в global.asax.

...