/// <summary> /// Processes AfterInvoke event subscriptions (if there any). /// </summary> /// <param name="details">Invocation details</param> private void ProcessAfterInvoke(InvocationDetails details) { if (_host.HasAfterInvokeSubscriptions()) { AfterInvokeEventArgs afterInvokeArgs = new AfterInvokeEventArgs() { TrackingID = details.TrackingID, InterfaceName = details.InterfaceName, DelegateCorrelationSet = details.DelegateCorrelationSet, MethodName = details.MethodName, Arguments = details.Args, ReturnValue = details.ReturnValue }; _host.OnAfterInvoke(afterInvokeArgs); } }
/// <summary> /// Verarbeitet AfterInvoke-Abos (falls welche registriert sind). /// </summary> /// <param name="trackingID">Aufrufschlüssel zur Nachverfolgung</param> /// <param name="interfaceName">Name der Komponentenschnittstelle</param> /// <param name="delegateCorrelationSet">Korrelationssatz für die Verdrahtung bestimmter Delegaten und Ereignisse mit entfernten Methoden</param> /// <param name="methodName">Methodenname</param> /// <param name="args">Parameter</param> /// <param name="returnValue">Rückgabewert</param> private void ProcessAfterInvoke(Guid trackingID, ref string interfaceName, ref List <DelegateCorrelationInfo> delegateCorrelationSet, ref string methodName, ref object[] args, ref object returnValue) { // Wenn AfterInvoke-Abos registriert sind ... if (_host.HasAfterInvokeSubscriptions()) { // Ereignisargumente für AfterInvoke erstellen AfterInvokeEventArgs afterInvokeArgs = new AfterInvokeEventArgs() { TrackingID = trackingID, InterfaceName = interfaceName, DelegateCorrelationSet = delegateCorrelationSet, MethodName = methodName, Arguments = args, ReturnValue = returnValue }; // AfterInvoke-Ereignis feuern _host.OnAfterInvoke(afterInvokeArgs); } }