Je suis autour en générant une enveloppe par classe pour la classe dérivée de ClientBase pendant le processus d'importation. J'ai d'abord essayé de générer une classe partielle supplémentaire avec le même nom que la classe client, mais cela a causé le reste de la génération de code à cesser de fonctionner correctement.
Donc, mon dernier code généré ressemble à quelque chose comme:
(générée par le générateur proxy WCF intégré):
public interface ServiceReference1
{
IAsyncResult BeginWebMethod1(AsyncCallback callback, object asyncState);
void EndWebMethod1(IAsyncResult result);
IAsyncResult BeginWebMethod2(AsyncCallback callback, object asyncState);
void EndWebMethod2(IAsyncResult result);
// ...
}
public class ServiceReference1Client
{
public event EventHandler<AsyncCompletedEventArgs> WebMethod1Completed;
public event EventHandler<AsyncCompletedEventArgs> WebMethod2Completed;
public void WebMethod1Async() { /* ... */ }
public void WebMethod2Async() { /* ... */ }
// ...
}
(généré par mon habitude IOperationContractGenerationExtension
):
public class ServiceReference1Wrapper
{
private ServiceReference1Client _client;
public ServiceReference1Wrapper(ServiceReference1Client client)
{
_client = client;
}
public IObservable<AsyncCompletedEventArgs> WebMethod1()
{
_client.WebMethod1Async();
// ...
}
public IObservable<AsyncCompletedEventArgs> WebMethod2()
{
_client.WebMethod2Async();
// ...
}
// ...
}
Note: J'utilise Silverlight, c'est pourquoi tout est asynchrone.
L'extension IOperationContextGenerationExtension est en effet un point d'extension côté serveur pour WCF. Qu'est-ce que vous voulez réaliser? Juste ajouter quelques méthodes à la classe proxy? Vois ma réponse. Faire quelque chose de plus ?? –
Je ne pense pas qu'il soit juste de dire que IOperationContextGenerationExtension est côté serveur. Il se connecte au processus d'importation et est donc côté client (par rapport au service Web). Au moins, c'est comme ça que je l'utilise. – dcstraw