Erste webservice-Methoden, die vom Soap-Client mit der spiegelung
Ich versuche zu bekommen eine MethodInfo-Sammlung von ein SOAPClient-Objekt, das enthält nur die Methoden, die der webservice selbst. Hier ist, was ich bin derzeit dabei. Im moment gibt es alle die Methoden der MyServiceSoapClient.
MyServiceSoapClient myService = new MyServiceSoapClient();
MethodInfo[] methods = myService.GetType().GetMethods();
InformationsquelleAutor Dunc | 2011-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den GetMethods () - Methode unterstützt bindingflags, die Sie verwenden können, um insbesondere die Methoden wählen, die Sie möchten, es zurückzugeben. Schau mal hier:
http://msdn.microsoft.com/en-us/library/4d848zkb.aspx
Auch, Sie könnte etwas linq, um weiter zu spezifizieren, was Sie suchen:
Die Letzte option, die Sie haben, um ein Attribut hinzuzufügen, um jede Methode, die Sie wollen es zurückgeben und dann test für das Vorhandensein des Attributs. Schau mal hier:
http://www.codeproject.com/KB/cs/attributes.aspx
Update 2011-01-18
Habe ich mir angeschaut Microsoft KnowledgeBase und festgestellt, dass das [WebMethod] Attribut ist.
http://support.microsoft.com/kb/308359 und http://msdn.microsoft.com/en-us/library/28a537td.aspx.
Wenn man alle Methoden, die Sie testen könnten, ob dieses Attribut, um zu entscheiden, ob die Methode ist eine WebMethod oder nicht.
Update 2011-01-20
Ich gerade getestet den folgenden code und es funktioniert in der Tat geben mir die die
WebMethodAttribute
imattribute
variable:Ich bin sicher, Sie sollten in der Lage sein, das gleiche zu tun mit Ihrem code und test für das Vorhandensein des WebMethodAttribute
Sicher, aber ich weiß nicht, welche spezifischen Methoden, die Sie würde gerne wieder zurück haben und welche nicht. Ich kann geben, ein code-Beispiel mit LINQ, das ist genauer, wenn Sie mir mit Ihren source-code. Können Sie fügen Sie den code Ihrer
MyServiceSoapClient
Klasse, und angeben, welche Methoden würden Sie gerne wieder zurück haben?Die Methoden, die ich zurückgegeben werden soll, sind die web-service-Methoden, die die Methoden markiert als [WebMethod] in der asmx-Datei. Ausschließen will ich die Methoden, die kommen aus der SOAP-client wie get_ClientFactory.
Bitte haben Sie einen Blick auf meine aktualisierte Antwort. Der code ist nicht ganz perfekt, da es nicht auf eine Fehlerbehandlung, und ich habe noch nicht getestet mit diesem code, aber es sollte dazu dienen, Ihnen eine Idee geben. Haben Sie ein durchsuchen der Codeproject.com link in meiner Antwort auf Attribute wie.
Dank für, die. Ich denke, dass wir auf dem richtigen Weg sind. Das problem ist, dass die GetCustomAttributes-Methode ist die Rückgabe eines leeren Arrays. Dies ist wahrscheinlich, weil Sie das WebMethod-Attribut wird festgelegt, in die die asmx-Datei. Das Objekt, das wir befragen, wird konstruiert, indem das visual studio, wenn die service Referenz Hinzugefügt wird und ist nicht die Klasse, wo Sie das WebMethod-Attribut deklariert ist.
InformationsquelleAutor Bazzz
Hier ist meine Methode mit XML-Analyse:
Zuerst lade ich die XML-Daten aus der WSDL:
Dann bin ich Parsen der XML-Knoten, wo die Methoden für das SOAP-Client und fügen Sie diese in eine generische Liste von strings:
Viel Spaß mit ihm.
Taragneti
InformationsquelleAutor Taragneti