私は、オブジェクトに多くの「属性」を提供するサードパーティのアプリケーションを持っています。これは、単に(文字列)キーと値のペアです。値のタイプは、文字列、DateTime、Int32、またはInt64のいずれかです。
このオブジェクトを便利な方法で表すために、独自のクラスを作成する必要があります。このオブジェクトをクライアントに提供するWCFサービスを作成しているので、非常に簡単でクリーンである必要があります。
属性のキーは、クライアントの列挙型として表示されます(サードパーティアプリケーションの特定のキー文字列の情報を非表示にするため)。ただし、値を表す方法がわかりません。オプションのいくつかを次に示します。
オプション1:属性値ごとに異なるコレクションを使用します。見苦しいようですが、クライアントにとっては非常に使いやすいでしょう。
public class MyObject
{
public Dictionary<MyTextAttributeKeysEnum, string> TextAttributes { get; set; }
public Dictionary<MyDateAttributeKeysEnum, DateTime> DateAttributes { get; set; }
public Dictionary<MyNumAttributeKeysEnum, long> NumericAttributes { get; set; }
public string Name { get; set; }
public string Id{ get; set; }
オプション2:すべての属性を文字列に変換する
public class MyObject
{
public Dictionary<MyAttributeKeysEnum, string> MyAttributes { get; set; }
public string Name { get; set; }
public string Id{ get; set; }
オプション3:それらをオブジェクトとして保持し、クライアントがキャストと変換に煩わされるようにします
public class MyObject
{
public Dictionary<MyAttributeKeysEnum, object> MyAttributes { get; set; }
public string Name { get; set; }
public string Id{ get; set; }