渡されたジェネリックオブジェクトのプロパティを取得する関数を持つジェネリッククラスがあります。以下のとおりです。
public class ExportToCsv<T>
where T: class
{
public ExportToCsv(List<T> obj)
{
this.Data = obj;
}
public StringBuilder CreateRows()
{
IEnumerable<PropertyInfo> properties = typeof(T).GetProperties();
}
}
以下のようにオブジェクト(クラス)から選択してオブジェクトを渡すと、正常に動作し、プロパティを返します
//GetLeadingRoutingRecords returns a class/object
var result = from obj in GetLeadRoutingRecords()
select new
{
LeadRoutingId = obj.LeadRoutingID,
Make = obj.Make
};
その結果を次のように渡しますresult.ToList();
しかし、以下のようなプロパティのクラスを作成して独自の匿名オブジェクトを作成しようとすると、プロパティを返さないと機能しません
注 : 以下のコードはループ内で呼び出され、正常に機能し、上記の関数に渡されると、デバッグによってすべての値を確認できます。
public CsvReport function return(){
return new CsvReport
{
ShopName = this.val,
TargetVehicleName = val
}.ToList();
}
上記の匿名オブジェクト用に作成したクラスは次のようになります。
public class CsvReport
{
public string ShopName { get; set; }
public string TargetVehicleName { get; set; }
}
したがって、この場合は機能しません。最初のレコードを選択して、以下のようなプロパティを取得しています
this.Data.First().GetType().GetProperties();
ここでも最初のパターンを使いたいのですが、type(T).GetProperties
それで、回避策をお願いします..................................