Typeで示される型を要素に持つ配列を作り、値をまとめてセットするには?
デシリアライザのようなものを作るにあたり、文字列から指定した型に変換してプロパティに設定する、というのは TypeConverter
と PropertyDescriptor
で実現できました。それで次は型付けされたコレクションに対応しようと考えています。
最初に考えたのは次のようなコードでした。
string[] input = new [] { "1", "2", "3" };
PropertyDescriptor prop = /* int[] なプロパティを指している */ ;
var converted = input.Select(prop.Converter.ConvertFrom).ToArray();
prop.SetValue(converted);
しかしこれでは object[]
になってしまい、 int[]
のプロパティに代入することができません。このような配列を作るにはどうするとよいでしょうか?
Activator.CreateInstance()
のようにコンパイル時には object
で要素を受け取り、Type
で指定した型の配列を作るメソッドがないものかと思ったのですが、ないようで。。