2016/08/10(Wed) 14:27:55 編集(投稿者)
■No80769 (のぶくん さん) に返信
> class Piyo
> {
> public Piyo((System.Data.Common.DbDataReader reader)
> {
> Hoge = reader["hoge"].ToString();
> Fuga = reader["fuga"].ToString();
> }
> }
> という形をとっています。
>
> ただこれだと、reader["hoge"]の部分がフィールド名を直書きで不便なので、
> 上記の質問に戻り、「確かそんな事ができたはずなんだけどなぁ・・・」と調べていました。
リフレクションで書いてみた。
class Piyo
{
public string hoge { get; set; }
public string fuga { get; set; }
public Piyo(System.Data.Common.DbDataReader reader)
{
for (int i = 0; i < reader.FieldCount; i++) {
string name = reader.GetName(i);
System.Reflection.PropertyInfo p = this.GetType().GetProperty(name);
if (p != null)
p.SetValue(this, reader[i].ToString(), null);
}
}
}