【问题标题】:Dictionary<string,string> intellisense字典<string,string> 智能感知
【发布时间】:2012-10-01 20:57:30
【问题描述】:

有没有办法在 C# 中为 Dictionary&lt;string,string&gt; 中的所有键获取智能感知?

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

我想要像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);

【问题讨论】:

    标签: c# string visual-studio intellisense dictionary


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

        • 当然您可以使用String 作为字典的键!当然,这不是问题的答案。
        • 如果你有一个键“foo”,你不能用“fo”查询字典并得到“foo”作为建议。字符串有哈希函数,当然可以作为字典中的键使用。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多