[C#] 인터페이스에 확장 메서드를 적용 할 수 있습니까?

인터페이스에 확장 방법을 적용 할 수 있습니까? (C # 질문)

예를 들어 다음을 달성하는 것입니다.

  1. ITopology 인터페이스 생성

  2. 이 인터페이스에 대한 확장 메서드를 만듭니다 (예 : public static int CountNodes (this ITopology topologyIf))

  3. 그런 다음 ITopology를 구현하는 클래스 (예 : MyGraph)를 만들 때 자동으로 Count Nodes 확장을 갖게됩니다.

이렇게하면 인터페이스를 구현하는 클래스가 확장 메서드에 정의 된 것과 일치하도록 설정된 클래스 이름을 가질 필요가 없습니다.



답변

물론 가능합니다. 대부분의 Linq는 인터페이스 확장 메서드를 중심으로 구축됩니다.

인터페이스는 실제로 확장 방법 개발의 원동력 중 하나였습니다. 자체 기능을 구현할 수 없기 때문에 확장 메서드는 실제 코드를 인터페이스 정의와 연결하는 가장 쉬운 방법입니다.

.NET을 기반으로 구축 된 전체 확장 메서드 컬렉션은 Enumerable 클래스를 참조하세요 IEnumerable<T>. 하나를 구현하려면 클래스에 대해 하나를 구현하는 것과 같습니다.

public static class TopologyExtensions
{
    public static void CountNodes(this ITopology topology)
    {
        // ...
    }
}

인터페이스에 관한 한 확장 메소드에 대해 특별히 다른 것은 없습니다. 확장 메서드는 컴파일러가 일부 구문 설탕을 적용하여 메서드가 대상 유형의 일부인 것처럼 보이게하는 정적 메서드입니다.


답변