WCFサービスを使用しています.WCFサービスを使用しています.WCFサービスでは、List(IWatchableは作成したカスタムインターフェイスです)を操作契約の1つに戻そうとしています。クライアント上でサービスをテストすると、このメソッドはList<IWatchable>
の代わりにobject[]
を返します。 IWatchableはWCFとのインターフェイスなので、IWatchableのListを返すことは可能ですか?WCFでリスト<Interface>を渡すにはどうすればよいですか?
方法:
public List<IWatchable> GetWorkload(Guid nodeId, int maximum)
IWatchable:
public interface IWatchable
{
string ActionName { get; set; }
Guid ActionReference { get; set; }
}
うまくいけば、もう少し情報が参考になります...
私は、派生インターフェイスがあります。
public interface IAMRAWatchable: IWatchable
を3つのコンセプトIAMRAWatchable
からTE実装:List<IWatchable>
私はクライアントへInstrumentationWatch
とOutputWatch
を送信したいを返す私のWCFの方法で
public class InstrumentationWatch: IAMRAWatchable
public class OutputWatch: IAMRAWatchable
etc...
...このことは可能ですか私はこれについて間違った道を進んでいますか?
は、私は私の解決策を見つけたジョン
感謝を解決しました。 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)
どのようにしてクライアントを作成しましたか(scratch/svcutil/Add Service Referenceから) –
私は両方とも同じ結果で試しました – DennyFerra
KnownTypes属性の実装方法を教えてください。 –