ログを保存するためのジェネリッククラスを作成しようとしています
ここではエンティティフレームワークを使用しているので、テーブルmng_users(string usr_name、int usr_id)がitentityのそれぞれのクラスを作成していると想像してください)
エンティティをデータテーブル(リストではなく、1行のみ)に変換するtoDataTableメソッドを実装する方法があるので、次のようなことができます。
mng_users1とmng_users2をmng_usersエンティティクラスとして持つ(両方とも同じIDで、異なる名前を持つ)
メソッド「savelog(mng_users1、mng_users2);」を呼び出します。次のコードを実行します。
private DataTable toDataTable(Object T)
{
DataTable vDataTable = new DataTable();
//AddColums here
//AddRow with the respective values here
return vDataTable;
}
public void savelog(Object newObject, Object oldObject)
{
DataTable newvalue, oldvalue;
newvalue = toDataTable(newObject);
oldvalue = toDataTable(oldObject);
string FieldNames = string.Empty, FieldValuesFrom = string.Empty, FieldValuesTo = string.Empty;
foreach (DataColumn item in newvalue.Columns)
{
if (newvalue.Rows[0][item].ToString() != oldvalue.Rows[0][item].ToString())
{
FieldNames += (FieldNames.Length > 0 ? " | " : string.Empty) + item.ColumnName;
FieldValuesFrom += (FieldValuesFrom.Length > 0 ? " | " : string.Empty) + newvalue.Rows[0][item].ToString();
FieldValuesTo += (FieldValuesTo.Length > 0 ? " | " : string.Empty) + oldvalue.Rows[0][item].ToString();
}
}
// Save log to sql code here
}