다른 클래스가 확장하는 DbContext
클래스가 있습니다. 예를 들어 :C# 제네릭 용으로이 클래스를 사용하십시오.
class Contact extends DbContext {}
클래스 DbContext
내부, 내가 제네릭에 DbContext를 확장 중 클래스 사용하려면 :
public static IEnumerable<DBContext> GetAll()
{
var sql = "SELECT * FROM " + TableName();
return DB().Fetch<DBContext> (sql);
}
주를 IEnumerable < DBContext> 여기.
위의 코드는 괜찮지 만 매번 형 입력해야합니다.
public static IEnumerable<thisClass> GetAll()
{
var sql = "SELECT * FROM " + TableName();
return DB().Fetch<thisClass> (sql);
}
주를 IEnumerable < thisClass> 여기에 : 나는 같은 thisClass
를 얻을 수 있습니다.
DStanley의 코멘트 후 :
내가하려고 노력 :
public static IEnumerable<T> GetAll<T>()
{
var sql = "SELECT * FROM " + TableName();
return DB().Fetch<T> (sql);
}
하지만이 같은 전화를하고 싶지 않은 : 깨끗하지
Contact.GetAll<Contact>();
합니다. 권리?
참고 : TableName()은 걱정할 필요가 없습니다. 그것은 그것이 호출되는 클래스를 기반으로하는 방식으로 SQL 메소드를 가져옵니다.
'public static IEnumerable GetAll () 여기서 T : DbContext'로 선언하고 토끼 구멍까지 얼마나 멀리 내려갈 수 있는지보십시오. 'TableName()'이 무엇을하는지 그리고/또는 그것이 generic 일 필요가 있는지는 명확하지 않다. –
또는 https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern – SLaks
@D 스탄 틀리를 사용하십시오. 실제로 했었지만 매번 수업을 통과하기를 원하지 않습니다. 내 질문에 업데이 트됩니다 – tika