0

Dictionary<string,string>C#ですべてのキーのインテリセンスを取得する方法はありますか?

または、文字列パラメーターを持つメソッドのインテリセンスを取得することは可能ですか?

私は持っているようなものを持ちたいですResourceManager.GetString("")。可能であれば、それをシミュレートするために定数文字列を持つ静的クラスを作成したくありません。

編集:

現在、辞書を使用して複数のリソース ファイルを 1 つの辞書に結合しています。これは、リソースが複数のプロジェクトで使用され、上書きする必要があるためです。

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

有限値がわかっている場合は、文字列を使用しないでください。この場合は列挙型を使用してください。

定義により、文字列には実行時に任意の値を含めることができますが、列挙型はコンパイル時に認識されます。

または、単に辞書の使用を避けることもできます。ディクショナリに常に同じキーが含まれることがわかっている場合は、以前に使用したキーごとに 1 つのプロパティを持つクラスを作成することをお勧めします。

于 2012-10-11T08:38:42.377 に答える
1

いいえ、ディクショナリのキーなど、コンパイル時にわからないものに対して Intellisense を使用する方法はありません。Intellisense は、コンパイル時オブジェクトに対してのみ機能します。

于 2012-10-11T08:39:21.917 に答える
0

Dictionary はハッシュ関数を使用しているため、使用できません。類似の文字列には類似のハッシュがないため、これは単に目的に適合しません。

これを自分で実装する必要がある場合は、基数ツリーを構築することで解決できると思います。

(実行時にインテリセンスが必要であるかのように解釈しました。)

于 2012-10-11T08:39:12.270 に答える