Re: Remoting и Delegate в очередной раз
От: mamoNT2005  
Дата: 12.10.05 19:50
Оценка: +2
Здравствуйте, wraithik, Вы писали:

W>может кто знает как решать проблему.


Избавиться от необходимости иметь клиентскую сборку на сервере можно так:
в общей сборке создать класс, который будет ретранслировать через себя события, возникающие на сервере. Например так:


    public class EventRepeater
        : MarshalByRefObject
    {
        public override object InitializeLifetimeService() // Не забываем
        {
            return null;
        }

        public event EventHandler SmthChanged;
        public void OnSmthChanged()
        {
            if (SmthChanged != null)
                SmthChanged();
        }
    }


Теперь клиент подписывается не напрямую к серверу, а через репитера.


EventRepeater rep = new EventRepeater ();
server.SmthChanged += new EventHandler (rep.OnSmthChanged);
rep.SmthChanged += new EventHandler (this.ClientMethod)


То есть сначала подписывает репитра к серверу, а потом себя к репитеру. Поскольку EventRepeater находится в общей сборке, клиентская сборка серверу больше не нужна
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.