2010-03-03 8 views

답변

11

이 방법/클래스 내에서 코드의 구문을 개선하기위한 도움이 될 것입니다,하지만 당신은 해당 확장 메서드가 제공하는 기능을 노출하고 싶지 않아 코드베이스의 다른 영역. 다시 말해, 일반 개인 정적 도우미 메서드에 대한 대안으로

+0

당신이 대답을 정확하다고 생각하고 생각한 후에 개인 정적 도우미 클래스가 의미있는 큰 도우미 클래스를 피하는 경향이 있기 때문에 처음으로 읽었습니다. +1 –

8

는 다음과 같은 고려 :

public class MyClass 
{ 
    public void PerformAction(int i) { } 
} 

public static class MyExtensions 
{ 
    public static void DoItWith10(this MyClass myClass) 
    { 
     myClass.DoIt(10); 
    } 

    public static void DoItWith20(this MyClass myClass) 
    { 
     myClass.DoIt(20); 
    } 

    private static void DoIt(this MyClass myClass, int i) 
    { 
     myClass.PerformAction(i); 
    } 
} 

내가 예는 현재의 형태로 훨씬 이해가되지 않습니다 실현을,하지만 난 개인 확장 방법에, 즉 수있는 기능을 제공하는 당신이 가능성을 감상 할 수있는 확신 캡슐화 또는 구성을 위해 비공개 확장을 사용하는 공개 확장 메소드가 있어야합니다.

+0

hm, MyClass를 변경하지 않으려는 경우 MyClass에서 DoIt 함수를 정상적인 함수로 사용할 수 있다고 가정합니다. 하지만 DoItWith20이 PerformAction 자체를 호출 할 수 있다면 DoIt 함수를 사용하는 것입니다. –

+0

@ThanosPapathanas MyClass는 액세스 권한이없는 코드 일 수 있습니다. 예 : 제 3 자의회 – Dolbz

+0

@ ThanosPapathanasiou : 예가 논리의 관점에서 완벽하다는 것을 알고 있지만, 나는 그것이 서둘러서 생각해 낼 수있는 것이었다. 그러나 사적인 확장 방법이 무의미하지 않다는 것을 보여줍니다. –

관련 문제