我正在尝试制作一个对象来保存一些字符串。对象可以是任何东西,包括集合、数组……字符串必须是可枚举的(IEnumerable 或类似的)。每个字符串索引器都需要被智能感知识别,反射是最后一个选项。一个对象,没有单独的索引器对象。
示例用法:
public static class features
{
public const string favorite = "blue background";
public const string nice = "animation";
}
public static class Program
{
public static void Main()
{
foreach (string feature in features)
{
Console.WriteLine(feature);
}
//... select a feature
Console.WriteLine(features.favorite);
}
}
编辑: 我将使用 Jim Mischel 提出的第一个解决方案,修改为使用反射,因为这获得了我目前感兴趣的优势。
- 将所有内容封装在一个实体中
- 名称直接与值相关联
枚举器是动态的
public IEnumerator<string> GetEnumerator() { FieldInfo[] strings = this.GetType().GetFields(); foreach (FieldInfo currentField in strings) { yield return currentField.GetValue(null).ToString(); } yield break; }
我感谢大家的努力。