인터페이스에 확장 방법을 적용 할 수 있습니까? (C # 질문)
예를 들어 다음을 달성하는 것입니다.
-
ITopology 인터페이스 생성
-
이 인터페이스에 대한 확장 메서드를 만듭니다 (예 : public static int CountNodes (this ITopology topologyIf))
-
그런 다음 ITopology를 구현하는 클래스 (예 : MyGraph)를 만들 때 자동으로 Count Nodes 확장을 갖게됩니다.
이렇게하면 인터페이스를 구현하는 클래스가 확장 메서드에 정의 된 것과 일치하도록 설정된 클래스 이름을 가질 필요가 없습니다.
답변
물론 가능합니다. 대부분의 Linq는 인터페이스 확장 메서드를 중심으로 구축됩니다.
인터페이스는 실제로 확장 방법 개발의 원동력 중 하나였습니다. 자체 기능을 구현할 수 없기 때문에 확장 메서드는 실제 코드를 인터페이스 정의와 연결하는 가장 쉬운 방법입니다.
.NET을 기반으로 구축 된 전체 확장 메서드 컬렉션은 Enumerable 클래스를 참조하세요 IEnumerable<T>
. 하나를 구현하려면 클래스에 대해 하나를 구현하는 것과 같습니다.
public static class TopologyExtensions
{
public static void CountNodes(this ITopology topology)
{
// ...
}
}
인터페이스에 관한 한 확장 메소드에 대해 특별히 다른 것은 없습니다. 확장 메서드는 컴파일러가 일부 구문 설탕을 적용하여 메서드가 대상 유형의 일부인 것처럼 보이게하는 정적 메서드입니다.