인터페이스 디자인
인터페이스는 구현자가 제공해야 하는 멤버 집합에 대한 시그니처를 정의합니다. 인터페이스는 멤버에 대한 구현 세부 사항은 제공할 수 없습니다. 예를 들어, ICollection 인터페이스는 컬렉션 작업과 관련된 멤버를 정의합니다. 인터페이스를 구현하는 모든 구체적인 클래스는 이러한 멤버에 대한 구현 세부 사항을 제공해야 합니다. 클래스는 단일 클래스에서만 상속할 수 있지만 여러 인터페이스를 구현할 수 있습니다. 다음 지침은 인터페이스를 올바로 디자인하는 데 도움이 됩니다.
일부 값 형식을 포함하는 형식 집합에서 몇 가지 일반적인 기능을 지원해야 하는 경우 인터페이스를 정의합니다.
값 형식은 ValueType에서 상속해야 합니다. 이러한 이유로, 값 형식에 대한 계약을 지정하기 위해 구체적인 클래스를 사용할 수 없고 대신 인터페이스를 사용해야 합니다.
이미 다른 형식에서 상속된 형식에서 해당 기능을 지원해야 하는 경우 인터페이스를 정의할 수 있습니다.
멤버가 없는 마커 인터페이스는 사용하지 않습니다.
사용자 지정 특성은 형식을 표시할 수 있는 방법을 제공합니다. 사용자 지정 특성에 대한 자세한 내용은 사용자 지정 특성 작성을 참조하십시오. 코드가 실행될 때까지 특성 검사를 지연시킬 수 있는 경우 사용자 지정 특성을 사용합니다. 시나리오에서 컴파일 시간을 검사해야 하는 경우 이 지침을 따를 수 없습니다.
인터페이스 구현인 형식을 적어도 하나 이상 제공합니다.
이렇게 하면 인터페이스를 올바르게 디자인하고 쉽게 구현할 수 있습니다. Int32 클래스는 IComparable 인터페이스에 대한 구현을 제공합니다.
사용자가 정의하는 각 인터페이스를 소비하는 멤버를 적어도 하나 이상 제공합니다. 예를 들어, 인터페이스를 매개 변수 또는 속성으로 사용하는 메서드는 인터페이스로 입력됩니다.
이렇게 하면 인터페이스를 올바르게 디자인하고 쉽게 사용할 수 있습니다.
이전에 제공한 인터페이스에 멤버를 추가하지 않습니다.
새 멤버를 추가하면 이전 버전의 인터페이스를 구현한 코드가 손상됩니다. 따라서 일반적으로 가능한 경우 인터페이스보다 클래스를 사용하는 것이 좋습니다. 자세한 내용은 클래스와 인터페이스 간의 선택을 참조하십시오.
인터페이스의 전달 정의에서 추가 멤버가 필요한 경우 새 인터페이스와 이 인터페이스를 사용할 해당 멤버를 구현할 수 있습니다.
Portions Copyright 2005 Microsoft Corporation. All rights reserved.
Portions Copyright Addison-Wesley Corporation. All rights reserved.
디자인 지침에 자세한 내용은 참조를 "Framework 디자인 지침: 규칙, 숙어, 및 재사용에 대 한 패턴입니다.NET 라이브러리"도 서 Krzysztof Cwalina와 Brad Abrams, 게시 Addison-wesley, 2005.