2011-03-02 5 views
5

다양한 유형의 확장 메소드가 포함 된 정적 클래스가 있습니다. 어떤 유틸리티 나 여러 클래스로 분할하는 방법이 있습니까? 각 대상 유형에 대해 별도의 클래스가 있어야합니다.확장 방법을 그룹화하는 방법은 무엇입니까?

+0

안녕하세요, 당신이 확장하는 모든 유형에 대해 typeExtensions와 같은 다른 클래스를 정의 하겠지만, 너무 많지 않으면 동일한 클래스와 네임 스페이스에 모든 클래스를 유지할 것입니다. –

답변

5

다양한 확장 메서드를 다른 클래스에 넣는 것이 "깨끗한 코드"관점에서 좋은 생각이지만 확장 메서드의 기본 "그룹화"는 다른 네임 스페이스에 배치하여 발생합니다. 그 이유는 적절한 네임 스페이스를 "사용"함으로써 확장 방법을 사용할 수 있기 때문입니다.

다른 확장 메서드 그룹을 다른 네임 스페이스에 넣는 것은 충돌하는 확장 메서드가있을 수 있으므로 좋습니다. 이런 경우 확장 메서드의 각 논리 그룹은 세분화 된 네임 스페이스에 있으므로 using 문 중 하나만 제거하면 충돌을 해결할 수 있으므로 실제로 원하는 확장 메서드가 포함 된 using 문을 그대로 둡니다.

public class StringComplexManager 
{ 
    public StringComplexManager(String value) 
    { 
     Value = value; 
    } 

    public String Value { get; set; } 
} 

public static class StringComplexExtensions 
{ 
    public static StringComplexManager ComplexOperations(this String value) 
    { 
     return new StringComplexManager(value); 
    } 

    public static int GetDoubleLength(this StringComplexManager stringComplexManager) 
    { 
     return stringComplexManager.Value.Length * 2; 
    } 
} 

사용법은 다음과 같습니다 :

string a = "Hello" 
a.ComplexOperations().GetDoubleLength() 

ComplexOperation() 그룹 확장 방법

http://blogs.msdn.com/b/vbteam/archive/2007/03/10/extension-methods-best-practices-extension-methods-part-6.aspx

+0

답변 해 주셔서 감사합니다. – Peter17

+0

+1 좋은 링크, 감사합니다! –

0

내가 그룹의 또 다른 방법이있다 : 여기

몇 가지 모범 사례에 대한 링크입니다 인텔리 센스를 좁 힙니다. 범위를 사용하여 원래 수백 개의 문자열 확장 메서드가있는 경우 intellisense에서 하나만 볼 수 있습니다.

관련 문제