2. Dul.Data 프로젝트에 전체 솔루션에서 공통으로 사용할 제네릭 인터페이스인 IBreadShop.cs 파일을 만들고, 다음과 같이 코드를 작성합니다.
//IBreadShop.cs using System.Collections.Generic; namespace Dul.Data { ///<summary> ///제네릭 인터페이스: 공통 CRUD 코드 => BREAD SHOP 패턴 사용 ///</summary> ///<typeparam name="T">모델 클래스</typeparam> public interface IBreadShop<T> where T : class { ///<summary> ///상세 ///</summary> T Browse(int id); ///<summary> ///출력 ///</summary> List<T> Read(); ///<summary> ///수정 ///</summary> bool Edit(T model); ///<summary> ///입력 ///</summary> T Add(T model); ///<summary> ///삭제 ///</summary> bool Delete(int id); ///<summary> ///검색 ///</summary> List<T> Search(string query); ///<summary> ///건수 ///</summary> int Has(); ///<summary> ///정렬 ///</summary> IEnumerable<T> Ordering(OrderOption orderOption); ///<summary> ///페이징 ///</summary> List<T> Paging(int pageNumber, int pageSize); } }
IBreadShop 제네릭 인터페이스는 앞에서 CRUD와 관련한 개체 이름 짓기 패턴 중에서 자주 사용되는 BREAD SHOP 단어를 미리 인터페이스로 정의해 놓은 형태입니다. 구조가 간단한 데이터를 다룰 때는 이 인터페이스를 상속한 후 기본 코드를 구현하고, 그다음 추가적인 로직을 구현해 가는 식으로 사용할 수 있습니다.
Ordering() 메서드는 학습 목적으로 읽고 쓰기가 가능한 List<T> 대신에 읽기 전용인 IEnumerable<T>를 사용한 것입니다. List<T> 형태를 사용해도 무관합니다.