まず、私の質問のかなり面白い名前を許してください。私はネイティブ スピーカーではありませんが、これらの数文字で自分の考えを表現するのに 10 分かかりました。
私がやろうとしているのは、C# で辞書を作成して、値を an int
、 astring
または aのいずれかにできるようにすることbool
です。最初に頭に浮かんだのはジェネリックを使用することでしたが、私の知る限り、可能な値型として定義できる型は 1 つだけであり、「それらの 1 つになる」ことはできません。を使用object
することも可能ですが、ボクシングはかなりのパフォーマンスキラーのようです。
これを行う方法はありますか?
これが私の頭に浮かんだことの例です:
Dictionary<string, (string, int, bool)> foo = new Dictionary<string, (string, int, bool)>();
foo.Add("key1", "Hello, World!"); //Correct - Value is a string
foo.Add("key2", 37); //Correct - Value is an int
foo.Add("key3", true); //Correct - Value is a boolean
foo.Add("key4", new Foobar()); //Compiler error - Value is a Foobar
私の最終的な目標は、他の開発者にライブラリを提供することです。この機能により、実行時に「変数」を定義し、型を与えることができるようになります。
Edit://Firefox の about:config ページには、私が達成したいものに非常に近いものがあります