簡體   English   中英

C#公開強類型字典鍵

[英]C# Expose strongly typed dictionary keys

我確定我不會用正確的詞來解釋,但我希望您理解我要完成的工作。 我有一個通過字典集合傳​​遞的類。 傳入字典集合的此類是否具有此類需要的某些鍵是強制性的。 我希望能夠公開公開該類所需的那些鍵,而不僅僅是公開字符串,而是公開實際項目。 枚舉是可行的,但是由於此類是基類,因此我認為這不是一個好的解決方案。 我需要類似於每次將項目添加到Resources.resx文件時生成的Resources類的東西。 因此,您可以只轉到Resources.Resources.MyLabel1,Resources.Resources.MyLabel2等。這可能嗎?

謝謝,邁克

創建顯示您的價值觀的屬性

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; }
}

您可以在您的課程中提供一個靜態或const成員:

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)
  {
    ...
  }
}

這聽起來像應該隱藏的細節

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?
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM