2

REST WCF サービスからジェネリック ICollection を返そうとしています。以下は可能でしょうか?

[ServiceContract]
public class WebConfigurationManager {

    [WebGet]
    [OperationContract]
    public ICollection<string> GetStrings() {
        return new string[] { "A", "B", "C" };
    }

}

Web ブラウザーからこの操作を実行しようとすると、エラーが発生します。私のWCFトレースを見ると、次のことがわかります。

タイプ 'System.String[]' (操作 'GetStrings'、コントラクト 'WebConfigurationManager' の場合) のパラメーターをシリアル化できません。これは、メソッド内の正確なタイプ 'System.Collections.Generic.ICollection`1[System.String]' ではないためですシグネチャであり、既知の型のコレクションには含まれていません。パラメーターをシリアル化するには、ServiceKnownTypeAttribute を使用して、操作の既知の型のコレクションに型を追加します。

4

2 に答える 2

2

これはうまくいくはずです:

[ServiceKnownType(typeof(string[]))]
[ServiceContract]
public class WebConfigurationManager {
    [WebGet]
    [OperationContract]
    public ICollection<string> GetStrings() {
        return new string[] { "A", "B", "C" };
    }
}
于 2009-07-16T20:02:44.743 に答える
0

アンドリューは私を正しい方向に向けました。答えは、追加することです

[ServiceKnownType(typeof(string[]))]

[ServiceContract] 属性の上。

于 2009-07-16T20:03:18.437 に答える