2010-12-29 4 views
0

Ich möchte so etwas wieWie alle Ergebnisse eines EndPoint in OperationResult umbrechen?

public class OperationResult{ 
    public string Status; 
    public string Data; 
} 

sogar jedes Ergebnis von einem WCF-Dienst in meiner Anwendung wickeln, wenn mein Vertrag wie

sieht
[ServiceContract] 
internal interface ITest 
{ 
    [OperationContract, 
    WebGet(
     RequestFormat = WebMessageFormat.Json, 
     ResponseFormat = WebMessageFormat.Json)] 
    MyDc EchoDc(MyDc input); 
} 

Von dem, was ich die möglichen Erweiterungspunkte gelesen habe sind IServiceBehavior , IEndpointBehavior, IContractBehavior, IOperationBehavior.

Irgendwelche Gedanken, wo ich meine Magie einwickeln kann?

Antwort

0

Ich denke, das ist nicht möglich über Erweiterungspunkte auf dem WCF-Framework, denn was Sie tun müssen, ist Ihren Vertrag zu ändern.

Der Vertrag ist eine C# -Schnittstelle, die von Ihrem Kunden verwendet wird.

Sie haben eine eigene Proxy-Klasse für die Verwendung von Ihrem Kunden zu schreiben, wo Sie die Operationsergebnisse abbilden können, was auch immer Sie mögen:

class ServiceProxy : ClientBase<YourServiceInterface> 
{ 

    public OperationResult EchoDc(MyDs input) 
    { 
     MyDc result = Channel.EchoDc(input); 
     return new OperationResult(... // map your operation result here)) 
    } 
} 
+0

Die Clients sind nicht notwendig .Net Verbraucher ... und sie erwarten, dass das Ergebnis ein JSON-Objekt wie {Status: 200, Daten: {Alter: 20, Name: "Yogy"}} – ruslander

+0

Ok, aber der Vertrag Gibt den Rückgabedatentyp an. Sie können das nicht ändern, ohne Ihren Vertrag zu ändern. – Jan

+0

, aber in einem REST-Kontext spielt der Vertrag keine Rolle. Trotzdem verstehe ich nicht, warum er weder seinen Vertrag ändert noch seinen Status außerhalb des Bandes zurückgibt. –

Verwandte Themen