0

Dictionary<string,string>有没有办法为C#中的所有键获取智能感知?

或者是否有可能获得带有字符串参数的方法的智能感知。

我想拥有类似的东西ResourceManager.GetString("")。如果可能的话,我不想创建一个带有常量字符串的静态类来模拟它。

编辑:

我目前正在使用字典将多个资源文件组合到一个字典中,这是因为资源用于多个项目并且需要被覆盖。

var temp = ResourceFile1.ResourceManager
                    .GetResourceSet(CultureInfo.CurrentUICulture, true, true)
                    .Cast<object>()
                    .Select(
                        x => new
                            {
                                ID = 1,
                                Value = x.GetType().GetProperty("Value").GetValue(x, null).ToString(),
                                Key = x.GetType().GetProperty("Key").GetValue(x, null).ToString()
                            });
                temp = temp.Concat(
                    ResourceFile2.ResourceManager
                        .GetResourceSet(CultureInfo.CurrentUICulture, true, true)
                        .Cast<object>()
                        .Select(
                            x => new
                            {
                                ID = 2,
                                Value = x.GetType().GetProperty("Value").GetValue(x, null).ToString(),
                                Key = x.GetType().GetProperty("Key").GetValue(x, null).ToString()
                            }));
                temp = temp.Concat(
                    ResourceFile3.ResourceManager
                        .GetResourceSet(CultureInfo.CurrentUICulture, true, true)
                        .Cast<object>()
                        .Select(
                            x => new
                                {
                                    ID = 3,
                                    Value = x.GetType().GetProperty("Value").GetValue(x, null).ToString(),
                                    Key = x.GetType().GetProperty("Key").GetValue(x, null).ToString()
                                }));
            ResourceDictionary = temp.GroupBy(x => x.Key)
                .Select(x => x.FirstOrDefault(c => c.ID == x.Max(v => v.ID)))
                .ToDictionary(x => x.Key, x => x.Value);
4

3 回答 3

5

如果您知道有限值,请不要使用字符串,而是在这种情况下使用枚举。

根据定义,字符串在运行时可以包含任何值,而枚举在编译时是已知的。

或者您可以简单地避免使用字典。如果您知道您的字典将始终包含相同的键,则最好创建一个类,其中每个键都有一个属性,您以前使用过。

于 2012-10-11T08:38:42.377 回答
1

不,没有办法对编译时未知的东西(例如字典中的键)进行 Intellisense。Intellisense 仅适用于编译时对象。

于 2012-10-11T08:39:21.917 回答
0

您不能使用 Dictionary,因为它使用哈希函数。由于类似的字符串没有类似的哈希,这根本不适合您的目的。

如果您需要自己实现它,我认为您可以通过构建基数树来解决它。

(我将其解释为您想要在运行时进行智能感知。)

于 2012-10-11T08:39:12.270 回答