0

属性付きプロパティを持つモデル クラスで使用している WebAPI コントローラーを使用して、C# の名前付けをより JavaScript に似た名前付けに変換しています。例えば

    [DataMember(Name = "posInfo")]
    public string PositionInformation { get; set; }

ワイヤを介して値を公開すると、すべて正常に機能します。ここで、サーバー側でコントローラーを呼び出して、アプリケーションの起動時にいくつかの初期値をブートストラップしようとしました。しかし、コントローラをローカルで呼び出すと、[DataMember] 属性は「解決」されません。すべてが C# の名前付きプロパティで返されます。

[DataContract][DataMember] はいつ開始され、コントローラーをローカルで呼び出した場合の使用方法は?

4

1 に答える 1

1

オブジェクトが逆シリアル化されると、DataMember が使用されます。そのため、web-api を使用してネットワーク経由でオブジェクトを送信する場合、クライアントはプロパティをposInfoとして受信する必要があります。オブジェクトを .net 経由でローカルに参照している場合 (たとえば、ライブラリまたはプロジェクト参照で)、プロパティをその名前PositionInformationで参照することになります。

実行しているシリアル化の種類によっては、このプロパティが変換されていないか、DataMember 属性がサポートされていない可能性があります。FWIW、Web API 用の組み込みの XML および JSON シリアライザーは、DataMember および DataContract 属性をサポートします。

DataMember 属性の機能の詳細については、MSDN サイトを参照してください。

于 2012-12-17T20:42:23.763 に答える