ほとんどのカスタムタイプで機能するジェネリックメソッドがあります。今日、私はユニットテストを構築しています。拡張機能はタイプで失敗しますstring
。stringには、2つのパブリックインスタンスプロパティとがLength
ありChars
ます。私がそれを呼ぶときGetValue
、それは「パラメータ数の不一致」を爆破します。
文字列を許可する必要はありません。問題を解決するのに十分な制約をジェネリックに追加できますか?
コードスニペット
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);
}
}