저는 NerdDinner (MVC 2)를 프로젝트의 기초로 사용하고 있습니다. 리포지토리 인터페이스 디자인이 잘 작동하는 동안, 실제 응용 프로그램에는 12 개의 모델 클래스가 있습니다 (NerdDinner에는 Dinner가 하나만 포함됨). 이는 각 클래스에 대해 하나의 인터페이스 (및 구현)가 필요하다는 것을 의미합니다. 또한 기본 인터페이스 메서드 (가져 오기, 저장, 추가, 삭제 등)는 동일하므로 모든 구현 클래스에서 동일한 코드를 &에 붙여 넣어야합니다.NerdDinner 일반 저장소 인터페이스?
void Add(Customer customer)
및 주문의 인터페이스가 노출 :
void Add(Order order)
구현은 기본적으로 방법 만 사용 모두 동일 변경 유일한 것은 고객의 인터페이스를 노출 예를 들어, 클래스의 종류이다 물론 적절한 모델 유형 :
db.Customers.InsertOnSubmit(customer)
및
db.Orders.InsertOnSubmit(order)
입니다. 또 다시 동일한 코드를 반복 중지 (내 프로젝트에서 .cs 파일의 수를 최소화) 내가 예를 들어, 나는 일반적인 기본 저장소 인터페이스를 정의 할 수 있다고 생각합니다 :
public interface IRepository<T>
{
void Add(T t)
void Delete(T t)
void Save(); // This one is truly the same in any case!
}
하지만 난 어떻게 적용 할 수 있습니다 제네릭 유형을 구현 코드로? 다음과 같은 것이 필요합니다.
db.T.InsertOnSubmit(t)
이 작업을 수행 할 수 있습니까?
추 신 : db는 datacontext 개체입니다 (저는 linq를 SQL 디자이너에 사용하고 있습니다).
감사