최근에 C#에서 데이터 바인딩을 사용 해왔고, 내가하는 일이 간단하고 효과적이지만 최선의 방법이라고 생각하지 않습니다.데이터 바인딩 컨트롤, 캡슐화를위한 모범 사례
class UserManager
{
public IList<User> Users { get; ...}
public AddUser(...)
public RemoveUser(...)
}
그래서 Adduser
및 RemoveUser
가 출력으로 Users
컬렉션 목록을 제어해야합니다 :
예를 들어, 나는 다음과 같은 인터페이스를 가지고 관리자 클래스, 즉 UserManager 있습니다.
listBindingSource.DataSource = userManager.Users;
내가 다음
listBindingSource.Add(new User(...))
이것은 물론 작동 즉, 바인딩을 통해 목록을 조작하고,하지만 난 완전히 UserManager
을 우회하고있다 : 나는 즉, 바인딩이 컬렉션을 사용하고 AddUser
/RemoveUser
기능이 있습니다! 물론 이것은 매우 잘못된 것 같습니다. 데이터 바인딩을 사용하는 올바른 방법은 무엇입니까?
UserManager
은 lib 디렉토리에 있으므로 바인딩 객체를 넣고 싶지 않습니다. GUI 객체 여야한다고 생각합니다. 반면 바인딩을 사용하면 내 GUI가 내 컬렉션을 완전히 제어 할 수 있습니다.
고맙습니다. 아주 좋은 정보입니다. BindingList로 내부 목록을 지정해야하는 것에 약간의 관심이 있습니다. 사용 방법을 알 필요가 없어야한다고 생각하기 때문입니다. 하지만 대안은 중급 변환 레이어라고 생각합니다.이 레이어는 소규모 프로젝트에서 가치가 없습니다. – DanDan
'BindingList'는 프리젠 테이션에 의존하지 않도록 설계되었습니다. 이는 변화를 감지하는 데 필요한 인프라를 제공하는 것뿐입니다. 어떤 데이터 바인딩 시나리오를 사용하든 관계없이 데이터 변경 내용이 GUI에 자동 반영되도록 변경 내용 추적 (또는보다 정확하게 * 변경 알림 *) 시스템이 있어야합니다. 'BindingList'사용에 대해서는 "냄새 나는"것이 없습니다. –