2010-04-19 4 views
3

Visual Studio를 사용할 때 직접 작성한 클래스에서 인터페이스를 쉽게 추출 할 수 있습니다. 클래스를 마우스 오른쪽 버튼으로 클릭하고 'Refactor'를 선택한 다음 'Extract Interface'를 선택하십시오..NEt 시스템 클래스에서 인터페이스 추출

내가 ConfigurationManager 랩퍼를 만들고 그 주위에 몇 가지 테스트를 작성한다고 가정 해 보겠습니다. 빠른 방법은 ConfigurationManager에서 인터페이스를 마우스 오른쪽 버튼으로 클릭하고 'Go To Definition'을 선택한 다음 클래스 내부에서 'Refactor'를 선택한 다음 'Extract Interface'를 선택하여 인터페이스를 추출하는 것입니다. 그렇다면 단순히 래퍼 클래스를 만들고 새로 만든 인터페이스에서 상속 받아 구현 한 다음 래퍼 클래스에 대한 좋은 시작점이 있습니다.

그러나 .NET 시스템 클래스에서 인터페이스를 추출하는 것은 불가능합니다. 아마도 클래스에 대한 메타 데이터이고 클래스 자체에 대한 메타 데이터 일 수도 있기 때문입니다 (또는 잘못하고 있습니다).

달성하려는 작업을 수행하는 쉬운 방법이 있습니까? 나는 내가 타이핑 할 필요가없는 것을 타이핑하는 것을 낭비하지 않도록하고 싶다.

감사

답변

3

문제는 인터페이스를 추출 너무 많이하지 않습니다 - 당신은 또한 '손'이 작업을 수행 할 수 있지만 시스템 정의 구성 관리자가이 인터페이스 이후를 구현하는 CLR을 알 수있는 방법이 없습니다 이 (메타) 정보는 수정할 수없는 프레임 워크 어셈블리에 저장됩니다.

편집 :

은 '손으로 추출'을 완화하기 위해 당신이 "정의로 이동"유형에 오른쪽 버튼으로 클릭하고 선택할 수 있습니다. Visual Studio는 메타 데이터로부터 (구현없이) 클래스 정의를 생성합니다. 그런 다음 복사하여 새 파일에 붙여 넣을 수 있습니다. 어쨌든 당신은 아직도 자신들이 무효 (

  • publicoverride 액세스 한정자를 제거 이외의 모든 public 메소드/속성을 interface
  • 제거에 의해
  • class 키워드를 교체 손으로 약간의 수정을해야 할 것이다 인터페이스 정의)

이것은 & 검색을 사용하여 쉽게 수행 할 수 있습니다. 이 방법으로 문서 문자열을 얻을 수도 있습니다.

+0

맞아요.하지만 '손으로'하지 않고도 (ConfigurationManager와 같은) 모든 .NET System 클래스에서 인터페이스를 추출하는 더 빠른 방법이 있는지 알고 싶었습니다. – Thomas

+0

Martin 감사합니다. Resharper 또는 다른 VS 플러그인이 메타 데이터에서 클래스를 추출 할 수 있는지 알고 있습니까? – Thomas

+0

미안하지만, 필자는이 플러그인을 작성하기가 너무 어렵지는 않지만 기존 플러그인에 대해서는 잘 모르고 있습니다 ... – MartinStettner

관련 문제