0
일반 클래스를 사용하여 GenericDao를 만들려고합니다.일반 클래스를 사용하는 GenericDao
나는 아래 코드가 잘못되었음을 알고 있으며, 추상 생성자는 허용되지 않으며 다른 많은 것들이 있지만 나는 내가 무엇을 시도하는지 이해하기를 바랍니다.
내 질문은, 가능합니까? 이것이 GenericDao를 만드는 올바른 방법입니까?
public class Business
{
public void Get()
{
var filter = new Entity1();
using (var dao = new GenericDao<Entity1>())
{
dao.Get(filter);
}
}
}
public abstract class GenericEntityBase
{
public abstract GenericEntityBase(IDataReader reader);
public abstract GenericEntityBase();
public abstract void FillParams(SqlParameter[] parameters);
public abstract void FillParams(SqlParameter[] parameters, PagingParameters paging);
public static string SearchProc;
}
public class Entity1 : GenericEntityBase
{
public int ID { get; set; }
#region IGenericEntity Members
public override void FillParams(SqlParameter[] parameters)
{
parameters[0].Value = this.ID;
}
public override void FillParams(SqlParameter[] parameters, PagingParameters paging)
{
}
public Entity1(IDataReader reader)
{
}
public Entity1()
{
}
public static string SearchProc = "SP001";
#endregion
}
public class GenericDao<T>: DataAccessObjectBaseV2 where T: GenericEntityBase, new()
{
public T Get(T filter)
{
var parameters = SqlHelperParameterCache.GetSpParameterSet(ConnectionString,T.SearchProc);
filter.FillParams(parameters);
using (IDataReader reader = SqlHelper.ExecuteReader(this.ConnectionString, CommandType.StoredProcedure, T.SearchProc, parameters))
if (reader.Read())
return new T(reader);
return default(T);
}
}