1

正しい言葉で説明するつもりはないと思いますが、私が成し遂げようとしていることをご理解いただければ幸いです。辞書コレクションに渡されるクラスがあります。この受け渡されたディクショナリコレクションには、このクラスに必要な特定のキーが含まれている必要がありますか。クラスに必要なキーを、文字列としてだけでなく、実際のアイテムとして公開できるようにしたいと思います。列挙は機能しますが、このクラスは基本クラスであるため、これが適切なソリューションであるとは思いません。Resources.resxファイルにアイテムを追加するたびに生成されるResourcesクラスに似たものが必要です。これで、Resources.Resources.MyLabel1、Resources.Resources.MyLabel2などに移動できます。これは可能ですか?

ありがとう、マイク

4

3 に答える 3

2

値を公開するプロパティを作成する

public class MyClass

    private Dictionary<string,string> _dict;

    public MyClass (Dictionary<string,string> dict)
    {
        _dict = dict;
    }

    public string FirstName { get { return _dict["FirstName"]; } }
    public string LastName { get { return _dict["LastName"]; } }
    ...
}

または、読み取り/書き込みプロパティを作成することもできます

public string FirstName { 
    get { return _dict["FirstName"]; }
    set { _dict["FirstName"] = value; }
}
于 2012-06-20T16:46:05.310 に答える
1

クラスに静的メンバーまたは定数メンバーを提供することができます。

class PickyClass {
  public static readonly string[] RequiredKeys = new[] {"length", "width"};

  /// <summary>
  /// Please note that you must include at least RequiredKeys in values
  /// </summary>
  public void Setup(Dictionary<string,string> values)
  {
    ...
  }
}

(編集)またはそれらが名前でアドレス可能であることが重要ですか?その場合、どうですか:

class PickyClass {
  public class RequiredKeys
  {
    public const string Length = "length";
    public const string Width = "width";
  }

  /// <summary>
  /// Please note that you must include every const in RequiredKeys in values
  /// </summary>
  public void Setup(Dictionary<string,string> values)
  {
    ...
  }
}
于 2012-06-20T16:39:22.093 に答える
0

これはあなたが隠すべき詳細のように聞こえます

public void Setup(Dictionary<string,string> values)

特定のキーが含まれている必要がある場合valuesは、その情報を独自の辞書タイプにエンコードできます。

public class FussyDictionary : Dictionary<string,string> {
  // You must provide these values
  public FussyDictionary(string valueA, string valueB) {
     Add("magicKey1", valueA);
     Add("magicKey2", valueB);
  }

  // Override remove to stop you removing these keys?
}
于 2012-06-20T16:46:54.123 に答える