[英]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.