Перехват событий RealProxy

Я пытаюсь перехватить событие (в этом случае действие), но не могу вернуться с прокси-сервера без исключения. Вот идея: у меня есть интерфейс событий, они не подписаны на стороне клиента. Поэтому, когда я пытаюсь поднять событие на стороне клиента, я ловлю это событие в прокси и отправляю на мой удаленный сервер имя этого события и его параметры, и я хочу просто вернуться из прокси. Вот мой образец

public interface IMyEvents
{
    Action OnPing { get; set; }
}

public class Proxy : RealProxy
{
    Type type;

    public Proxy(Type type)
        : base(type)
    {
        this.type = type;
    }

    public override IMessage Invoke(IMessage msg)
    {
        var call = (IMethodCallMessage)msg;
        string MethodName = (string)msg.Properties["__MethodName"];
        object[] parameters = (object[])msg.Properties["__Args"];

        // Send Command to server
        // SendData(MethodName, parameters);

        // tell the invoker that everything's fine
        return new ReturnMessage(null, null, 0, call.LogicalCallContext, call);
    }
}

public class Test
{
    public Test()
    {
        Proxy proxy = new Proxy(typeof(IMyEvents));
        Events = (IMyEvents)proxy.GetTransparentProxy();
    }

    public readonly IMyEvents Events;
}

class Program
{
    public static void Main(string[] args)
    {
        Test t = new Test();
        t.Events.OnPing();  // NullReferenceException
    }
}

0 ответов

Другие вопросы по тегам