次の問題があります。顧客が、次の形式でデータを返すWebサービスを要求しました。
<status>
<name1>Some name</name1>
...
</status>
ただし、エラーが発生すると、次のメッセージが表示されます。
<status>
<error>Error description</error>
</status>
WCFを使用してWebサービスを作成し、要件を満たすために、次のサービス契約を定義しました。
[ServiceContract]
public interface IPatronStatus
{
[OperationContract]
[ServiceKnownType("GetKnownTypes", typeof(KnownTypesProvider))]
[WebGet(UriTemplate = "/service/status?user={unilogin}")]
StatusData GetPatronStatus(string unilogin);
}
また、次の基本クラスを定義しました。
[DataContract(Name="status")]
public class StatusData
{
}
そして、2つの派生クラス:
public class PatronStatusData : StatusData
{
private string _name;
[DataMember(Name = "name1", Order = 0)]
public string Name
{
get { return _name; }
set { _name = value; }
}
...
}
と:
public class UniLoginNotFoundError : StatusData
{
public UniLoginNotFoundError()
{ }
private string _description = "UniLoginNotFoundError";
[DataMember(Name = "error", Order = 0)]
public string Description
{
get
{
return _description;
}
}
}
問題は、Webサービスからデータをプルするときに、データコントラクト名(「ステータス」)とデータメンバーの名前が無視され、タイプとプロパティの名前が使用されることです。
顧客名を使用することは可能ですか?