2008-09-18 5 views
18

확장 방법은 어떻게 구성합니까? 나는 객체 클래스 및 문자열 클래스에 대한 확장이 있다면 나는 수업 IE에 이러한 확장 메서드를 분리하는 유혹하다고 말하고 :확장 방법 구성

public class ObjectExtensions 
{ 
    ... 
} 

public class StringExtensions 
{ 
    ... 
} 

내가이 너무 복잡하게하거나 메이크업 감각을하지 무엇입니까?

답변

12

확장 메서드는 네임 스페이스와 클래스 이름의 조합을 사용하여 구성합니다.이 메서드는 사용자가 질문에 설명하는 것과 비슷합니다.

일반적으로 내 솔루션에는 확장 기능과 같은 공유 기능을 제공하는 일종의 "기본 어셈블리"가 있습니다. 토론을 위해이 어셈블리를 "프레임 워크"라고 부릅니다.

프레임 워크 어셈블리 내에서 확장 메서드가있는 것들의 네임 스페이스를 모방하려고합니다. 예를 들어 System.Web.HttpApplication을 확장 할 경우 "Framework.Web"네임 스페이스가 있습니다. "System"네임 스페이스에있는 "String"및 "Object"와 같은 클래스는 해당 어셈블리의 루트 "Framework"네임 스페이스로 변환됩니다.

마지막으로 네이밍은 질문에서 지정한 줄을 따라 진행됩니다. 형식 이름에는 "Extensions"가 접미사로 사용됩니다.

  • 프레임 워크 (네임 스페이스)
    • Framework.ObjectExtensions (클래스)
    • Framework.StringExtensions (클래스)
    • Framework.Web (네임 스페이스)
        이이 같은 클래스 계층 구조를 산출
      • Framework.Web.HttpApplicationExtensions (클래스)

이점은 유지 관리 관점에서 볼 때 특정 유형의 확장 메소드를 찾는 것이 매우 쉽다는 점입니다.

+0

첫 번째 확장 클래스를 만들기 전에이 대답을 보았습니다. – Sung

3

내가 사용하는 확장 메서드를 구성하는 두 가지 방법, 확장 내가 작업하고있는 프로젝트에 고유 한 경우

1), 그때에 같은 프로젝트/조립에 보관하지만이 있습니다 자체 네임 스페이스.

2) 확장 프로그램이 다른 프로젝트에서도 사용할 수 있거나 사용중인 경우 확장 프로그램의 공통 어셈블리에서 확장 프로그램을 구분합니다.

명심해야 할 가장 중요한 점은 이들을 사용할 범위는 무엇입니까? 내가 이것을 염두에두면 그들을 조직하는 것이 어렵지 않습니다.