我确信我不会用正确的词语来解释,但我希望你明白我想要完成的事情。 我有一个在字典集合中传递的类。是否必须在字典集合中传递此类需要的某些键。我希望能够公开公开类所需的那些键,但不仅仅是字符串,而是实际的项目。枚举可以工作,但由于这个类是基类,我不认为这是一个很好的解决方案。我需要类似于每次向Resources.resx文件添加项时生成的Resources类。所以你可以去参考Resources.Resources.MyLabel1,Resources.Resources.MyLabel2等。 这可能吗?
谢谢, 麦克
答案 0 :(得分: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; }
}
答案 1 :(得分:1)
你可以在你的班级上提供一个静态或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)
{
...
}
}
答案 2 :(得分: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?
}