0

CLSAPIService という名前の単純な WCF サービスを開発しました。契約には UpdateLastOpenCloseCall という名前のメソッドが含まれています。

[OperationContract(Name = "UpdateLastOpenCloseCall", Action = "http://uniform.com/UpdateLastOpenCloseCall")]
CallResult UpdateLastOpenCloseCall(int iSwitchID, int iAgentID, string strExtension, BusinessDataField[] bdFields);

そのパラメーターの 1 つは単純な DataContract です。

[DataContract]
public struct BusinessDataField
{
    [DataMember]
    public string Name;
    [DataMember]
    public object Value;
}

次に、Visual .Net 2005 の Managed C++ で簡単なテスト プロジェクトを作成し、サービスの Web 参照を作成しました。

CLSAPIProxy::CLSAPIService^ service = gcnew CLSAPIProxy::CLSAPIService();
CLSAPIProxy::BusinessDataField ^f1 = gcnew CLSAPIProxy::BusinessDataField();
f1->Name = L"test_string";
f1->Value = L"string";

CLSAPIProxy::BusinessDataField ^f2 = gcnew CLSAPIProxy::BusinessDataField();
f2->Name = L"test_int";
f2->Value = 123;

System::Collections::Generic::List<CLSAPIProxy::BusinessDataField^> ^list = gcnew;
System::Collections::Generic::List<CLSAPIProxy::BusinessDataField^>();
list->Add(f1);
list->Add(f2);
service->UpdateLastOpenCloseCall(1,true,22817,true,L"24319",list->ToArray());

nullBusinessDataField 構造が WCF メソッドに到達すると、値を割り当てたにもかかわらず、Value プロパティのみが更新され、Name プロパティがになっているように見えます。

何が問題なのですか?

4

1 に答える 1

1

Order をデータ メンバに追加してください。[DataMember(Name = "FirstName", IsRequired = true, Order = 2 )] 次の記事を参照してください: データ メンバーの順序を変更する

于 2008-12-23T07:53:01.690 に答える