개인 확장 방법을 사용할 수있는 이점이 있습니까? 나는 그 (것)들을 위해 어떤 용도도 찾아 내지 않았다. C#이 그것들을 전혀 허용하지 않는다면 더 좋지 않을까요?비공개 확장 방법을 사용해 본 적이 있습니까?
답변
이 방법/클래스 내에서 코드의 구문을 개선하기위한 도움이 될 것입니다,하지만 당신은 해당 확장 메서드가 제공하는 기능을 노출하고 싶지 않아 코드베이스의 다른 영역. 다시 말해, 일반 개인 정적 도우미 메서드에 대한 대안으로
는 다음과 같은 고려 :
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);
}
}
내가 예는 현재의 형태로 훨씬 이해가되지 않습니다 실현을,하지만 난 개인 확장 방법에, 즉 수있는 기능을 제공하는 당신이 가능성을 감상 할 수있는 확신 캡슐화 또는 구성을 위해 비공개 확장을 사용하는 공개 확장 메소드가 있어야합니다.
hm, MyClass를 변경하지 않으려는 경우 MyClass에서 DoIt 함수를 정상적인 함수로 사용할 수 있다고 가정합니다. 하지만 DoItWith20이 PerformAction 자체를 호출 할 수 있다면 DoIt 함수를 사용하는 것입니다. –
@ThanosPapathanas MyClass는 액세스 권한이없는 코드 일 수 있습니다. 예 : 제 3 자의회 – Dolbz
@ ThanosPapathanasiou : 예가 논리의 관점에서 완벽하다는 것을 알고 있지만, 나는 그것이 서둘러서 생각해 낼 수있는 것이었다. 그러나 사적인 확장 방법이 무의미하지 않다는 것을 보여줍니다. –
나는 그들을 위해 많은 용도가 있었다는 것이 의심스러워 조사하기 위해 인터넷 검색을 실시했다. 그러나 이것은 그들에 대한 훌륭한 설명 응용 프로그램입니다 :
http://odetocode.com/blogs/scott/archive/2009/10/05/private-extension-methods.aspx
- 1. 이러한 CSS 속성을 사용해 본 적이 있습니까?
- 2. KMP 또는 BM 알고리즘을 사용해 본 적이 있습니까?
- 3. 데이터베이스 호스팅 서비스 만 사용해 본 적이 있습니까?
- 4. DialerFilter를 사용해 본 사람이 있습니까?
- 5. 누구나 Clipsmm을 사용해 본 경험이 있습니까?
- 6. 누구나 Control.SendToFront를 본 적이 있습니까?
- 7. 누구나 AppScale을 사용해 본 경험이 있습니까?
- 8. 누구나 모노에서 CSLA를 사용해 본 경험이 있습니까?
- 9. ReactOS로 소프트웨어를 사용해 본 사람이 있습니까?
- 10. Grails에서 CloudFoundry를 사용해 본 경험이있는 사람이 있습니까?
- 11. 누구나 Actinic을 사용해 본 경험이 있습니까?
- 12. 누구나 Seam 3을 사용해 본 경험이 있습니까?
- 13. 누구나 J/XFS를 사용해 본 경험이 있습니까?
- 14. 더하기 기호 난에 본 적이
- 15. 지금까지 사용해 본 최고의 Flex 프레임 워크
- 16. 그루비를 코어 테스팅 언어로 사용해 본 경험이 있습니까?
- 17. Divmod의 "Ultimate Quality Development System"을 사용해 본 사람이 있습니까?
- 18. 64 비트 컴퓨터에서 Affirma ThreeSharp 라이브러리를 사용해 본 경험이 있습니까?
- 19. 누구나 PHP로 berkeley db를 사용해 본 경험이 있습니까?
- 20. 이상한 IE JavaScript 동작/버그를 본 적이 있습니까?
- 21. .NET EF 4.1의 엔터프라이즈 응용 프로그램 CodeFirst - 본 적이 있습니까?
- 22. <span>과 같은 사용을 본 적이 있습니까?
- 23. 누구나 ZooKeeper를 사용해 보았습니까?
- 24. 레일 '테스트 커버리지 난 그냥 레일이 문제를 본 적이
- 25. 지금까지 사용해 본 최고의 jQuery 기반 윈도우 플러그인은 무엇입니까?
- 26. ZendAMF에는 비공개 회원이 있습니까?
- 27. 정의는 파이썬에서 개체/기관이 같은 반복의 예를 본 적이
- 28. 어떻게이 상속 특성에 대한 글을 많이 본 적이 형에게
- 29. 네트워크 흐름 문제를 해결하기 위해 MapReduce를 사용해 본 경험이있는 사람이 있습니까
- 30. 본 적이 있나요? _mysql_exceptions.OperationalError "쿼리 동안 MySQL 서버에 분실 연결"
당신이 대답을 정확하다고 생각하고 생각한 후에 개인 정적 도우미 클래스가 의미있는 큰 도우미 클래스를 피하는 경향이 있기 때문에 처음으로 읽었습니다. +1 –