0
KeyValuePairを返すWCFメソッドを作成しました。標準では、各フィールドの名前またはラベルはKeyまたはValueのいずれかです。私たちのBAは、サービスがKeyとValueではなくCountyKeyとCountyNameのような名前を返すように変更できるかどうかを尋ねています。これも可能ですか?その要件を満たすためにKeyValuePairで返される値の名前/ラベルを変更する方法
KeyValuePairを返すWCFメソッドを作成しました。標準では、各フィールドの名前またはラベルはKeyまたはValueのいずれかです。私たちのBAは、サービスがKeyとValueではなくCountyKeyとCountyNameのような名前を返すように変更できるかどうかを尋ねています。これも可能ですか?その要件を満たすために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'になります。 –