------------------------------------------------
/// <summary>
/// 同じプロパティから同じ値をセットします
/// </summary>
/// <typeparam
name="T"></typeparam>
/// <param
name="self"></param>
/// <param
name="Frommodel"></param>
public static void CopyFromSameProperty<T>(this T self, object
Frommodel, List<string> Lstexcept = null)
{
PropertyInfo[]
propertyInfo = Frommodel.GetType().GetProperties();
foreach (PropertyInfo p in propertyInfo)
{
if (Lstexcept != null
&& Lstexcept.Contains(p.Name)){ continue; }
//コピー元
var arg = p.GetValue(Frommodel, null);
//コピー先
PropertyInfo pTo =
self.GetType().GetProperty(p.Name);
if (pTo != null)
{
pTo.SetValue(self, arg);
}
}
}
------------------------------------------------②使い方は以下。
------------------------------------------------
// ベースとなる行
var baseRow = db.T_hoge.Where(d => d.番号 == 1234).FirstOrDefault();
var newRow = new T_hoge();
newRow.CopyFromSameProperty(baseRow);
//一度全項目コピーする
------------------------------------------------
※「このプロパティはコピーしたくない!」というものがあるならば
以下の様にプロパティ名を指定すればOK
※「このプロパティはコピーしたくない!」というものがあるならば
以下の様にプロパティ名を指定すればOK
newRow.CopyFromSameProperty(baseRow,
new List<string> { "番号" }); //一度全項目コピーする
0 件のコメント:
コメントを投稿