ジェネリックメソッドを用いて引数・返り値の型を動的に
メソッドの引数・返り値にジェネリックを用いることで、
型が異なる処理を同一のメソッドで行うことができる
サンプルデータクラス
public class clsIntStruct
{
public int Value1 { get; set; }
public int Value2 { get; set; }
}
public class clsDoubleStruct
{
public double Value3 { get; set; }
public double Value4 { get; set; }
}
処理クラス
引数に渡されたクラスを、10個の配列にして返している
その際、渡されたクラス内のプロパティを動的に取得、格納している
public class clsToArray
{
public static List<T> StructToArray<T>(T objStrust) where T:class, new()
{
List<T> arrayResult = new List<T>();
for(int intCount = 0; intCount < 10; intCount++)
{
T objWork = new T();
foreach (PropertyInfo objInfo in objStrust.GetType().GetProperties())
{
objInfo.SetValue(objWork, objInfo.GetValue(objStrust));
}
arrayResult.Add(objWork);
}
return arrayResult;
}
}
呼び出しサンプル
public MainWindow()
{
InitializeComponent();
// Int型のクラス
clsIntStruct objInt = new clsIntStruct();
objInt.Value1 = 3;
objInt.Value2 = 10;
List<clsIntStruct> resultInt = clsToArray.StructToArray(objInt);
// Double型のクラス
clsDoubleStruct objDouble = new clsDoubleStruct();
objDouble.Value3 = 1.5;
objDouble.Value4 = 9.7;
List<clsDoubleStruct> resultDouble = clsToArray.StructToArray(objDouble);
}
ディスカッション
コメント一覧
まだ、コメントがありません