我有一組方法,它們包含日期和布爾值。然後這些方法使用一些SQL,然後將它傳遞給另一個方法並返回一個列表。每種方法都與返回的SQL和List的例外幾乎相同。現在我知道有更好的方法做這些方法,但我不知道如何。C#抽象方法
有沒有人有任何想法,我可以如何抽象或使用更好的設計,因爲方法幾乎相同?
下面是代碼:
private List<ENT_Message> GetMessageData(DateTime? startDate, DateTime? endDate, bool IsSelectAll)
{
List<ENT_Message> ret = new List<ENT_Message>();
string sql = "";
if (IsSelectAll)
{
sql = "select * from tbl_message";
}
else
{
sql = " Select * from tbl_message where created_Date between @start_Date and @end_date";
}
return Converter.SerializeToMessageList(this.GetData(startDate, endDate, IsSelectAll, sql));
}
private List<ENT_SensorData> GetSensorData(DateTime? startDate, DateTime? endDate, bool IsSelectAll)
{
List<ENT_SensorData> ret = new List<ENT_SensorData>();
string sql = "";
if (IsSelectAll)
{
sql = "select * from tbl_sensor_data";
}
else
{
sql = "select * from tbl_sensor_data where Timestamp between @start_date and @end_Date";
}
return Converter.SerializeToSensorDataList(this.GetData(startDate, endDate, IsSelectAll, sql));
}
private List<ENT_SensorDataEvent> GetSensorDataEvents(DateTime? startDate, DateTime? endDate, bool IsSelectAll)
{
List<ENT_SensorDataEvent> ret = new List<ENT_SensorDataEvent>();
string sql = "";
if (IsSelectAll)
{
sql = "select * from tbl_sensor_data_event";
}
else
{
sql = "select * from tbl_sensor_data_event where start_time between @start_date and @end_Date";
}
return Converter.SerializeToSensorEventDataList(this.GetData(startDate, endDate, IsSelectAll, sql));
}
private List<ENT_SensorDataState> GetSensorDataState(DateTime? startDate, DateTime? endDate, bool IsSelectAll)
{
List<ENT_SensorDataState> ret = new List<ENT_SensorDataState>();
string sql = "";
if (IsSelectAll)
{
sql = "select * from tbl_sensor_data_state";
}
else
{
sql = "select * from tbl_sensor_data_state where start_time between @start_date and @end_Date";
}
return Converter.SerializeToSensorDateStateList(this.GetData(startDate, endDate, IsSelectAll, sql));
}
private List<ENT_WorkOrder> GetWorkOrders(DateTime? startDate, DateTime? endDate, bool IsSelectAll)
{
List<ENT_WorkOrder> ret = new List<ENT_WorkOrder>();
string sql = "";
if (IsSelectAll)
{
sql = "select * from tbl_workorder";
}
else
{
sql = "select * from tbl_sensor_data_state where completed_date between @start_date and @end_Date";
}
return Converter.SerializeToWorkOrderList(this.GetData(startDate, endDate, IsSelectAll, sql));
}
爲什麼你不只是添加代碼作爲你的問題的一部分? – RQDQ 2011-02-24 16:38:38
@RQDQ:代碼有點長,會使問題變得不可讀。我清楚地看到其他地方沒有問題。 – 2011-02-24 16:40:42
@亨克如果你看看代碼,你會看到返回的列表 – Funky 2011-02-24 16:43:46