1

イベント (その場合はアクション) をフックしようとしていますが、例外なくプロキシから戻ることはできません。アイデアは次のとおりです。私はイベントのインターフェースを持っていますが、クライアント側ではサブスクライブしていません。したがって、クライアント側でイベントを発生させようとすると、プロキシでこのイベントをキャッチし、リモートサーバーにこのイベントの名前とそのパラメーターを送信して、プロキシから戻りたいだけです。ここに私のサンプル

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
    }
}
4

0 に答える 0