2010-03-23 11 views
5

estoy intentando algo como esto:¿Puede un contrato WCF utilizar múltiples interfaces de devolución de llamada?

[ServiceContract (
    CallbackContract = typeof (CallbackContract_1), 
    CallbackContract = typeof (CallbackContract_2), 
    CallbackContract = typeof (CallbackContract_3)) 
] 
public interface SomeWcfContract { 

sé que no funciona de esta manera. ¿Todavía hay una manera de hacer que un solo contrato use múltiples interfaces de devolución de llamada?

Respuesta

6

Un contrato de servicio sólo puede designar un contrato de devolución de llamada si ese contrato es una subinterfaz de todos los contratos de devolución de llamada definidos por contratos de bases propias del contrato.

interface ICallbackContract1 
{...} 

interface ICallbackContract2 : ICallbackContract1 
{...} 

[ServiceContract(CallbackContract = typeof(ICallbackContract1))] 
interface IMyBaseContract 
{...} 

[ServiceContract(CallbackContract = typeof(ICallbackContract2))] 
interface IMySubContract : IMyBaseContract 
{...} 

o

interface ICallbackContract1 
{...} 
interface ICallbackContract2 
{...} 
interface ICallbackContract3 : ICallbackContract2,ICallbackContract1 
{...} 

[ServiceContract(CallbackContract = typeof(ICallbackContract1))] 
interface IMyBaseContract1 
{...} 
[ServiceContract(CallbackContract = typeof(ICallbackContract2))] 
interface IMyBaseContract2 
{...} 
[ServiceContract(CallbackContract = typeof(ICallbackContract3))] 
interface IMySubContract : IMyBaseContract1,IMyBaseContract2 
{...} 

see for more details

+0

Ah, pensé sub-interfaz significaba algo así como interfaz base ... es más bien lo contrario. Ahora tiene muchísimo sentido de repente. Y se ajusta más perfectamente al diseño de mi aplicación planificada. – mafu

+0

@mafutrct: buena suerte. – garik

+0

@garik ¡buena respuesta! esto no es algo que sea intuitivo o fácil de encontrar, pero funciona como se indica. – SouthShoreAK

Cuestiones relacionadas