我創建了一個類,其中主要任務是從數據庫獲取數據並將其映射到某個對象。問題是同一類需要將不同的數據讀取器映射到不同的對象。所以,我試圖做的是走出使用委託的映射方法。委託 - 我的代表是否正確?
這是我的代碼的一部分。以粗體顯示重要行。
public class GetDetails<T>
{
**public delegate void DelegateMapping(T position, IDataReader reader);**
**public DelegateMapping mappingMethod;**
public T Get(T instance)
{
//Get IDs and Add to list
_db.ExecuteReader(storedProcedure.ToString(), CommandType.StoredProcedure, reader =>
{
while (reader.Read())
{
**mappingMethod(instance, reader);**
}
}, parameterList.ToArray());
return instance;
}
}
這是被調用和使用「GetDetails」類
public class PositionDB : DbBase
{
public Position GetPositionDetails(string IDs)
{
GetDetails<Position> getIDs = new GetDetails<Position>(base.db);
getIDs.storedProcedure = StoredProcedure.NET_ADM_GetPositionDetails;
//Set the Delegated Method
**getIDs.mappingMethod = MappingPositionDetails;**
//Set Parameters
getIDs.parameterList.AddInParam("PositionIds", DbType.String, IDs);
//Return the PositionId Collection
return getIDs.Get(new Position());
}
**private void MappingPositionDetails(Position position, IDataReader reader)
{
position.Id = reader["CompPositionId"];
position.Description = reader["Description"];
position.ExpirationDate = reader["ExpirationDate"];
position.Title = reader["Title"];
}**
}
的代碼工作正常類。
的questios是:
- 我有沒有正確使用委託?
- 這種解決方案可能會在未來造成問題(性能)?
- 還有另一個更好的解決方案?
非常感謝您
塞巴斯蒂安