Frage

Ich verwende Einheit Interception einen Methodenaufruf zu prüfen. Alles funktioniert gut: Die Methode wird abgefangen und ich kann den Namen der Methode bekommen und andere denkt. Ich mag auch das Ergebnis meiner Methode erhalten. Zum Beispiel, wenn meine Methode eines List-Objekt zurückgibt bin ich nur in der Lage, die IMethodReturn.ReturnValue zuzugreifen, dessen Typs ist ein Objekt. In meinem Fall ist der zugrunde liegende Typ des Ergebnisses Liste, damit ich das IMethodReturn.ReturnValue Rückgabeobjekt wie diese werfen kann. (List) IMethodReturn.ReturnValue Problem: Ich muß diese Arbeit machen, wenn ich nicht weiß, den Rückgabetyp der abgefangenen Methode. Das heißt, manchmal die Ausführung der abgefangenen Methode kann einen String-Typen zurückgeben, andere eine Liste, andere eine Liste und so weiter. Die posibilities sind riesig. Ich muß, wenn möglich, eine Möglichkeit, die IMethodReturn.ReturnValue an den zugrunde liegenden Typ des Rückgabewertes der abgefangenen Methode zu konvertieren. Das endgültige Ziel ist es, das Verfahren Ergebnis xml zu transformieren und die Daten in einer Datenbank zu speichern. Für Prüfzwecke.

Hier ist der Code (sorry für Format ...)

/// Invoke-Methode public IMethodReturn Invoke (IMethodInvocation Eingang, GetNextHandlerDelegate getNext) { IMethodReturn resultData getNext = () (Eingang, getNext); // Injektion nach Methodenausführung. this.InjectionCall (Eingang, resultData);
Rückkehr resultData; }

// Hier ist das Problem ... private void InjectionCall (IMethodInvocation Eingang, IMethodReturn Ergebnis) { String method = input.MethodBase.Name;

// How to get the 
//List<object> resultList = (List<object>)result.ReturnValue   ???
//Type type = resultData.ReturnValue.GetType()

// Calling the audit service. IocFactory is the container helper object.
//IAuditService srvAudit = IocFactory.Resolve<IAuditService>();
//srvAudit.RegisterData(methodName,null,null);

}

Danke.

War es hilfreich?

Lösung

Das eigentliche Problem war die Transformation von dem Objekt durch die abgefangenen Verfahren mehr als ein Problem der Interception selbst zurückgegeben. Ich löste es durch das Objekt zu Xml serialisiert. Die Lösung, die ich gefunden habe, ist in diesem Link:

Serialize Objekt XmlDocument

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top