ほとんどのカスタムタイプで機能する汎用メソッドがあります。今日私はユニットテストを構築しています。拡張子はタイプstring
で失敗します。文字列には、2つのパブリックインスタンスプロパティLength
とChars
があります。私がGetValue
と呼ぶとき、それは "パラメータ数不一致"を爆発させる。文字列を反映したときにパラメータの数が一致しない不一致
文字列を許可する必要はありません。問題を解決するのに十分なジェネリックに制約を追加できますか?あなたはだけはして値を取得することができるように...しかし、.NET/CLRの用語では「インデックスパラメータを持つプロパティ」 -
コードが
public static DataTable ToDataTable<T>(this List<T> items){...
//List<T> generally works...just found it failing out with string
List<string> items = new List<string> { "cookie", "apple", "whatever" };
System.Reflection.PropertyInfo[] props = typeof(string).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
foreach (var item in items)
{
var values = new object[props.Length];
for (var i = 0; i < props.Length; i++)
{
values[i] = props[i].GetValue(item, null);
}
}
http://stackoverflow.com/questions/3747572/how-do-i-deal-with-arrays-using-reflection –
@ChrisShain - 私は従いません。彼らは配列について話している。 MSDNリストによると配列ではありません。私はそのリンクから何を得るべきですか? –
Charsプロパティがインデクサーであるため、第2引数としてnullを渡すことはできません。私は非常に真剣にあなたがこのプロパティを見たいと思っています。 –