私はジェネリックを初めて使用しますが、物事をDRYに保つためにジェネリックを使用する必要があることを知っています:)
多くの異なるタイプのリストをドロップダウン リスト コントロールで使用される共通のクラスに変換するクラスを作成しようとしていますが、それを機能させることはできません。以下の方法でこれを試すための2つのオプションを示しています。それぞれを機能させようとしています(foreachループとlinq)が、役に立ちません。
private static IEnumerable<ddlOptions> GetDDLOptionsViewModel<T>(List<T> genericList, string strPropName)
{
// option A: ForEach loop
Type type = genericList.GetType();
var IdProperty = type.GetProperty("Id");
var DisplayNameProp = type.GetProperty(strPropName);
List<ddlOptions> options = new List<ddlOptions>();
foreach (var l in genericList)
{
options.Add(new ddlOptions
{
Id = IdProperty.GetValue(l, null),
DisplayName = DisplayNameProp.GetValue(l, null)
});
}
return options;
// option B - LINQ
return from l in genericList
select new ddlOptions
{
Id = l.Id,
DisplayName = l.strPropName
};
}