0
我們創建了一個返回KeyValuePair的WCF方法。按照標準,每個字段的名稱或標籤都是鍵或值。我們的廣管局詢問是否可以更改該服務,以便服務返回名稱爲CountyKey和CountyName而不是Key和Value。這甚至有可能嗎?如何更改在KeyValuePair中返回的值的名稱/標籤
我們創建了一個返回KeyValuePair的WCF方法。按照標準,每個字段的名稱或標籤都是鍵或值。我們的廣管局詢問是否可以更改該服務,以便服務返回名稱爲CountyKey和CountyName而不是Key和Value。這甚至有可能嗎?如何更改在KeyValuePair中返回的值的名稱/標籤
的一種方式,以填補這一要求是寫出具有這些字段的自定義類:
:public class CountryKVP<TKey, TValue>
{
public TKey CountryKey { get; }
public TValue CountryValue { get; }
public CountryKVP(TKey key, TValue value)
{
CountryKey = key;
CountryValue = value;
}
public CountryKVP(KeyValuePair<TKey, TValue> input)
{
CountryKey = input.Key;
CountryValue = input.Value;
}
}
然後,您可以從WCF方法直接通過這個類
CountryKVP<string, string> country = client.WebSvcThatReturnsCountryKVP();
或者,在消費方面,您可以通過將返回的KeyValuePair
傳遞給構造函數來初始化它:
var country = new CountryKVP<string, string>(client.WebSvcThatReturnsKVP);
// Now use the properties:
Console.WriteLine("{0} = {1}", country.CountryKey, country.CountryValue);
而且,因爲我們正在處理一個單一KeyValuePair
這裏,通常你只能將其分配給一個叫Country
屬性,然後訪問Key
和Value
,如:
var someObject = new ObjectWithCountryProperty();
someObject.Country = client.WebSvcThatReturnsKVP();
// Now use the properties:
Console.WriteLine("{0} = {1}", someObject.Country.Key, someObject.Country.Value);
您可以隨時使用這些屬性創建並使用一個新類,而不是KVP。這是一個不可接受的或不合意的解決方案? – Amy
使用「CountryKey」和「CountryName」屬性創建一個類,然後使用它。否則,取決於你如何序列化的東西,你可以在那裏改變它。 –
根據他們爲什麼要這樣做,也許最好將響應捕獲到名爲'Country'的屬性或字段中。然後,對於一個屬性,你應該有:'someObject.Country.Key'或者一個局部變量,它只是'country.Key'。 –