¿Cómo puedo pasar una Lista <Interfaz> a través de WCF?

Tengo un servicio de WCF donde intento devolver una Lista (donde IWatchable es una interfaz personalizada que he creado) en uno de mis contratos de operación. Cuando pruebo el servicio en el cliente el método devuelve unobject[] en lugar deList<IWatchable>. ¿Es posible devolver una lista de IWatchable, ya que IWatchable es una interfaz con WCF?

Método:

public List<IWatchable> GetWorkload( Guid nodeId, int maximum )

IWatchable:

public interface IWatchable
{
    string ActionName { get; set; }
    Guid ActionReference { get; set; }
}

Esperemos que un poco más de información sea útil ...

Tengo una interfaz derivada:

public interface IAMRAWatchable: IWatchable

Y tres implementaciones concretas desdeIAMRAWatchable:

public class InstrumentationWatch: IAMRAWatchable
public class OutputWatch: IAMRAWatchable
etc...

En mi método WCF que devuelveList<IWatchable> Quiero enviar unInstrumentationWatch y unOutputWatch para el cliente ... ¿Es esto posible o lo estoy haciendo al revés?

Resuelto

Gracias a John encontré mi solución.KnownType no estaba funcionando desde que estaba usandoList<IWatchable> - Entonces, envolví mi lista en una nueva clase y le agregué los atributos. Necesitaré reformular mi código, pero para otros interesados ​​aquí está la clase:

[DataContract]
[KnownType( typeof( InstrumentationWatch ) )]
[KnownType( typeof( OutputWatch ) )]
public class WorkInfo
{
    [DataMember]
    public List<IWatchable> WorkQueue { get; set; }
}

y mi método WCF:

public WorkInfo GetWorkload( Guid nodeId, int maximum )

Respuestas a la pregunta(1)

Su respuesta a la pregunta