2009-06-09 2 views

답변

7

음, 특히 .NET에서 가장 중요한 인터페이스 중 하나이며 하나의 이벤트를 노출하는 인터페이스가 하나 있습니다 ... INotifyPropertyChanged. :)

FxCop 또는 프레임 워크 가이드 라인에서이 가이드에 대한 추천을 본 적이 없으며 그 이유를 알 수 없습니다. 유일한 것은 명시 적으로 인터페이스를 구현하면 명시 적 추가/제거 접근자를 사용해야 할 때 이벤트를 구현하는 것이 엉덩이의 고통이된다는 것입니다.

0

나는 이벤트 인터페이스에 대한 필요성을 대체 할 수 있기 때문에이 주로 생각합니다.

일반적으로 인터페이스는 Java와 같은 언어의 이벤트 시스템에 사용됩니다. .NET에서 단일 메소드로 등록 할 수있는 이벤트가있는 경우 해당 메소드뿐만 아니라 전체 클래스도 거의 필요하지 않습니다.

이벤트를 구현하는 인터페이스가있는 합법적 인 상황이있을 수 있지만 이벤트를 인터페이스 작성의 필요성을 줄이기위한 방법으로 간주하므로 인터페이스를 작성해야합니다.

나는 그것을 나쁜 습관으로 생각하지 않을 것입니다.

2

아무 문제 없습니다. 그것은 단지 계약을 지정하는 것이며, 특히 계약의 유형을 발생 시키도록 지정하는 것입니다.

개인적으로 몇 가지 내부 인터페이스에서 사용하고 있으며 코드 정리에 도움이됩니다. 인터페이스에서 지정하지 않으면 구체적인 클래스에 있어야하며 특정 구현과 연결됩니다.

3

가치가있는 부분에 대해서는 전혀 나쁜 행동이라고 생각하지 않습니다.

확실히 그 공통점은 아니지만 다른 기술의 필요성이나 사용이 부족하기 때문에 더 많은 것이 있습니다.

인터페이스에서 이벤트를 사용하여 매우 효과적입니다.

참고 : COM 또는 WCF를 통해 인터페이스를 노출하려면 이벤트가 좋지 않을 수 있지만 그다지 중요하지 않습니다.

+1

나는 COM과 이벤트에 관해서 두 번째로 언급 할 것이다. COM interop 래퍼가 얼마나 낭비 적이라는 것을 믿지 않을 것입니다. – Josh

2

이벤트는 적절한 용도로 사용됩니다. 그것들은 객체의 "나가는"인터페이스를 지정하는 방법을 제공합니다.

예를 들어, IBindingList에는 ListChanged 이벤트가 있습니다.

중요한 디자인 결정은 이벤트를 다른 인터페이스와 함께 포함할지 또는 별도의 인터페이스에 넣을 지 여부입니다. 핵심 요소는 방법이 특정 이벤트에 얼마나 강하게 결합되어 있는지입니다.

0

인터페이스가 실제로 이벤트를 요구할 때 인터페이스가 이벤트를 요구하는 것은 완전히 논리적입니다!

0

전혀 나쁘지 않다고 생각합니다!인터페이스를 정의하여 자주 사용하는 구성 요소에서 주요 응용 프로그램을 분리 할 수 ​​있으므로 런타임에 동적으로 인스턴스화하고 호출해야합니다. 구성 요소가 수행하는 작업에 대한 상태를 전달하기 위해 인터페이스 계약에서 몇 가지 이벤트를 정의하여 기본 애플리케이션에서 구독 대상을 알고 구성 요소가 기본 애플리케이션에 필요한 것을 정확히 게시하도록했습니다.

관련 문제