私はリフレクションを使って作業してきましたが、それはまだ私にはとても新しいものです。だから下の行が働く。これは、DataBlockOneのリストを返します実行時のキャスティングリストタイプC#リフレクション
var endResult =(List<DataBlockOne>)allData.GetType()
.GetProperty("One")
.GetValue(allData);
しかし、私は実行時までmyTypeを知りません。だから私の考えは、返されたオブジェクトから型を取得し、その型をDataBlockOneのリストとしてキャストするコードです。
List<DataBlockOne> one = new List<DataBlockOne>();
one.Add(new DataBlockOne { id = 1 });
List<DataBlockTwo> two = new List<DataBlockTwo>();
two.Add(new DataBlockTwo { id = 2 });
AllData allData = new AllData
{
One = one,
Two = two
};
var result = allData.GetType().GetProperty("One").GetValue(allData);
Type thisType = result.GetType().GetGenericArguments().Single();
メモ以下のリストタイプはわかりません。私はちょうど私が私が混乱してる
if (endResult.Count > 0)
{
var search = endResult.Where(whereExpression);
}
(あなたが返されたオブジェクトをキャストしていない場合、これはエラーになります)ので、私は後でリストを検索することができますキャストする必要が
var endResult =(List<DataBlockOne>)allData.GetType() // this could be List<DataBlockTwo> as well as List<DataBlockOne>
.GetProperty("One")
.GetValue(allData);
例としてDataBlockOneを使用しますクラスの型とリストで使用される型誰かが、実行時に型を取得し、それをリストの型として設定するために正しい方向に向けることができますか?
クラス定義:
public class AllData
{
public List<DataBlockOne> One { get; set; }
public List<DataBlockTwo> Two { get; set; }
}
public class DataBlockOne
{
public int id { get; set; }
}
public class DataBlockTwo
{
public int id { get; set; }
}
'dataList'のコンパイル時の型は何でしょうか? –
したがって、コンパイル時の特典は、実行時にしか知り得ないタイプにする必要がありますか?そこには矛盾のビットがあります –
getDataはどのようなタイプを返しますか? – pm100