2 つのクラス間でデータをマッピングしています。1 つのクラスは、別のクラス (販売注文) でデータを作成または修正する発注書です。また、販売注文値が null でない場合の変更内容のトランザクション ログも保持しています。これをジェネリックにする方法をアドバイスできますか?
private static DateTime CheckForChange(this DateTime currentValue,
DateTime newValue, string propertyName)
{
if (currentValue == newValue) return currentValue;
LogTransaction(propertyName);
return newValue;
}
private static decimal CheckForChange(this decimal currentValue,
decimal newValue, string propertyName)
{
if (currentValue == newValue) return currentValue;
LogTransaction(propertyName);
return newValue;
}
private static int CheckForChange(this int currentValue,
int newValue, string propertyName)
{
if (currentValue == newValue) return currentValue;
LogTransaction(propertyName);
return newValue;
}
元の提案されたコード例
private static T CheckForChange<T>(this T currentValue, T newValue,
string propertyName) where T : ???
{
if (currentValue == newValue) return currentValue;
LogTransaction(propertyName);
return newValue;
}
最終リビジョン:
public static T CheckForChange<T>(this T currentValue, T newValue,
string propertyName, CustomerOrderLine customerOrderLine)
{
if (object.Equals(currentValue, newValue)) return currentValue;
//Since I am only logging the revisions the following line excludes Inserts
if (object.Equals(currentValue, default(T))) return newValue;
//Record Updates in Transaction Log
LogTransaction(customerOrderLine.CustOrderId,
customerOrderLine.LineNo,
propertyName,
string.Format("{0} was changed to {1}",currentValue, newValue)
);
return newValue;
}