私はジェネリックオブジェクトのプロパティを取得する関数を持つジェネリッククラスを持っています。ジェネリック型オブジェクトのリフレクションを使用してプロパティを取得します
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 class CsvReport
{
public string ShopName { get; set; }
public string TargetVehicleName { get; set; }
}
ので、この場合には、そのが働いていない、私は最初のレコードを選択し、
this.Data.First().GetType().GetProperties();
以下のようなプロパティを取得しています:私は上記の匿名オブジェクトのために書いた
クラスは以下のようなものです
public CsvReport function return(){
return new CsvReport
{
ShopName = this.val,
TargetVehicleName = val
}.ToList();
}
ここでも最初のパターンを使用します。type(T).GetProperties
だから、どんな仕事でもどうぞ........................
あなたの「次のコード」コメントすることは、それは少し難しい作るこれ、あまり意味がありません - そしてあなたの「匿名オブジェクト」... *を匿名ではありません*:それは 'CsvReport'です。明確にすることはできますか?理想的には 'ExportToCsv'を実際に呼び出すコードを表示しますか?また、 'this.Data'はどのように宣言されていますか? –
より小さな例を挙げてください。問題に集中するのは簡単です – lordkain
'ExportToCsv'をどのようにインスタンス化していますか? –