У меня есть служба WCF, в которой я пытаюсь вернуть список (где IWatchable - это пользовательский интерфейс, который я создал) в одном из моих контрактов на эксплуатацию. Когда я тестирую сервис на клиенте, метод возвращает object[]
вместо List<IWatchable>
. Можно ли вернуть список IWatchable, поскольку IWatchable - это интерфейс с WCF?
Метод:
public List<IWatchable> GetWorkload( Guid nodeId, int maximum )
IWatchable:
public interface IWatchable
{
string ActionName { get; set; }
Guid ActionReference { get; set; }
}
Надеюсь, немного больше информации будет полезно ...
У меня есть производный интерфейс:
public interface IAMRAWatchable: IWatchable
И три конкретных варианта реализации от IAMRAWatchable
:
public class InstrumentationWatch: IAMRAWatchable
public class OutputWatch: IAMRAWatchable
etc...
В моем методе WCF, который возвращает List<IWatchable>
Я хочу отправить InstrumentationWatch
и OutputWatch
клиенту ... Это возможно или я поступаю неправильно?
Решено
Благодаря Джону я нашел свое решение. KnownType
не работал, так как я использовал List<IWatchable>
- поэтому я обернул свой список в новый класс и добавил к нему атрибуты. Мне нужно пересмотреть мой код, но для других, кто интересуется здесь, есть класс:
[DataContract]
[KnownType( typeof( InstrumentationWatch ) )]
[KnownType( typeof( OutputWatch ) )]
public class WorkInfo
{
[DataMember]
public List<IWatchable> WorkQueue { get; set; }
}
и мой метод WCF:
public WorkInfo GetWorkload( Guid nodeId, int maximum )