예제

 

아래는 TestClass  에 IDataContextState 라는 인터페이스가 구현되어져 있을떄 입니다.

인터페이스

이 인터페이스는 클라이언트 측에서 데이터가 삭제/수정/신규 상태를 관리하게 위해서 만들었습니다. 이인터페이스를 구현해놓은 클래스는

    //특정 클래스에서 이 인터페이스를 구현해 놓으면 추가/수정/삭제를 알수있습니다.
	public interface IDataContextState
    {
        bool IsNew { set; get; }
        bool IsDeleted { get; set; }
        bool IsEdited { get; set; }
    }

IDataContextState 상태 변경시키키 호출

그리듀 뷰 에서 삭제를 눌렀을때 발생하는 이벤트

        private void dgvDocCategory_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            Contract.Data.Doc.DocCategory df = e.Row.DataBoundItem as Contract.Data.Doc.DocCategory;
			//RepositoryManager<T> : List<T>  형태입니다. 여기에 Delete 메소를 추가하였습니다.
            DocCategoryRepositoryManager.Delete(df);
                
        }

특정 클래스에 인터페이스가 구현 되어져 있는지 체크하기하고 상태변경

    public class RepositoryManager<T> : List<T> 
    {

        public void Delete<T>(T t) {          
            Type type = t.GetType().GetInterface("IDataContextState"); 
            if( type != null ) //IDataContextState 가 구현되어져있음 삭제 형태를 변경합니다.
            {
                ((Contract.Data.IDataContextState)t).IsDeleted = true;
            }
        }
    }

+ Recent posts