XMLを読み取り、オブジェクトにデータを取り込むメソッドがあります。これは、オブジェクトのプロパティ名を作成するXMLの要素名に基づくリフレクションを介して行われます。これは基本的なオブジェクトタイプで機能しますが、列挙型配列で苦労しています。
したがって、列挙型配列プロパティのPropertyInfoオブジェクト(プロパティと呼びます)があり、列挙値を表すコンマ区切りの数値( "1,3,5"など)を含む文字列値(値と呼びます)があります。
私が試してみました:
property.SetValue(this, value.Split(',').Select(i => int.Parse(i)).ToArray(), null);
と
property.SetValue(this, value.Split(',').Select(i => Enum.ToObject(property.PropertyType.GetElementType(), int.Parse(i))).ToArray(), null);
しかし、喜びはありません。最初のコード例では、Select.ToArrayの結果はint []であり、これは解析エラーをスローします。2番目の場合も同様ですが、Select.ToArrayはobject []を返し、再び解析エラーをスローします。
列挙型が不明であるかのように書きたいと思います。
何か案は?