0
知道是否有使用泛型方法,使其更加优雅和消除类型名称开关重构这个工作代码“开关”语句的好方法:C#3.5重构方法使用泛型方法
private void CreateFragDetailsHistoryLogEntry(string field, FRAGMENT_ANALYSIS fragment, ModifiedMemberInfo info, RegistriesLinqDataContext context, string analyteName)
{
LABRESULT_CHANGE_TRACKING tracking = new LABRESULT_CHANGE_TRACKING();
string originalValue = null, newValue = null;
var typeName = info.OriginalValue == null ? info.CurrentValue.GetType().Name : info.OriginalValue.GetType().Name;
switch (typeName)
{
case "DateTime":
originalValue = (info.OriginalValue as DateTime?).HasValue ? String.Empty : (info.OriginalValue as DateTime?).Value.ToShortDateString());
newValue = (info.CurrentValue as DateTime?).HasValue ? String.Empty : (info.CurrentValue as DateTime?).Value.ToShortDateString());
break;
case "String":
originalValue = info.OriginalValue.ToString();
newValue = info.CurrentValue.ToString();
break;
case "Boolean":
originalValue = (bool)info.OriginalValue ? "True" : "False";
newValue = (bool)info.CurrentValue ? "True" : "False";
break;
case "Char":
originalValue = ((char?)info.OriginalValue).HasValue ? (char?)info.OriginalValue == 'Y' ? "True" : "False" : "False";
newValue = ((char?)info.CurrentValue).HasValue ? (char?)info.CurrentValue == 'Y' ? "True" : "False" : "False";
break;
}
tracking.CHANGE_DESCRIPTION = @"Fragment #" + fragment.FRAGMENT_ID_NUMBER + @" field """ + field + @""" changed from """ + originalValue
+ @""" to """ + newValue + @""".";
tracking.CHANGE_FIELD = "Fragment Details";
break;
tracking.SetAsInsertOnSubmit();
LabResultsTrackingManager manager = new LabResultsTrackingManager();
manager.Update(tracking);
}
此方法创建并向数据库写入对现有LINQ实体的更改。
这是codereview.stackexchange的问题。 com,而不是StackOverflow。 –
@Judah wtf是codereview?为什么我们不能讨论SO上的代码模式和代码风格?这太荒谬了:o) – stefan
@stefan StackOverflow适用于可以有明确答案的问题。这个问题 - “我如何重构我的蹩脚代码” - 是主观的。这更适合http://codereview.stackexchange.com –