System.Net.Mime.MediaTypeNames.Image
과 같은 정적 클래스를 확장하기 위해 확장 메서드 나 다른 기법을 사용할 수 있는지 궁금합니다.확장 메서드를 사용하여 정적 클래스를 확장
답변
아니요, 확장 메서드는 정적 메서드 (또는 속성)가 아닌 인스턴스 메서드를 추가하는 데만 사용할 수 있습니다. 확장 메서드는 실제로 정적 메서드 주위의 구문 설탕입니다. 당신은 카운트()로 확장 메서드를 사용할 때 예를 들어, :
var list = GetList();
var size = list.Count();
이 실제로으로 컴파일 :
var list = GetList();
var size = Enumerable.Count(list);
당신은 확장 방법을 사용하여 기존 클래스에 추가 정적 메서드를 추가 할 수 없습니다 .
"확장 메서드는 인스턴스 메서드 만 추가하는 데 사용할 수 있습니다"라고 말하는 것이 맞습니까? 당신이 설명 할 때, 그들은 단지 인스턴스 메소드 인 것처럼 보입니다. 실제로 인스턴스 메소드가 아니거나 클래스의 비공개 멤버에 액세스 할 수 있습니다. –
아니요, C#에서는 아직 가능하지 않습니다.하지만 언젠가는 그렇게 될 것입니다. 그리고 정적 클래스는 서브 클래스 object
에서 파생되어야하므로 정적 클래스를 서브 클래스로 만들거나 새 메서드를 추가 할 수 없습니다. 코드에서 꽤 비슷한 효과를내는 한 가지 방법은 확장 메서드가 필요할 때 대신 사용할 다른 정적 클래스를 선언하는 것입니다. 예를 들어 일본어 클래스는 정적이기 때문에
public static class MessageBox2
{
public static DialogResult ShowError(string Caption, string Message, params object[] OptionalFormatArgs)
{
return MessageBox.Show(string.Format(Message, OptionalFormatArgs), Caption, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
정의에 의해 "확장자"방법은 this
파라미터로 인스턴스를 수신 할 필요가없고, 단순히 원본 클래스의 정적 메소드를 사용할 수있다.
- 1. 정적 확장 메서드
- 2. 확장 메서드를 통한 디버그
- 3. 확장 클래스이지만 기본 호출은 확장 클래스를 호출해야합니다.
- 4. 자바 클래스를 확장 -
- 5. 정적 개체에 대한 확장 메서드
- 6. 정적 클래스의 확장 메서드는 무엇입니까?
- 7. 2.0 Framework로 확장 메서드를 만들 수 있습니까?
- 8. 제대로 확장 메서드를 문서화하는 방법
- 9. 중첩 된 정적 클래스에서 확장 메서드를 사용할 수 없습니까?
- 10. 정적 클래스의 확장 메서드를 만들 수없는 이유는 무엇입니까?
- 11. 정적 클래스 자체 내에 확장 메서드를 포함하는 것이 좋습니다.
- 12. 정적 클래스에서 C# 확장 메서드를 정의해야하는 이유는 무엇입니까?
- 13. 왜 확장 클래스 내에서 확장 메서드를 호출하려면 "this"를 사용해야합니까?
- 14. Microsoft는 왜 자신의 클래스에 확장 메서드를 사용합니까?
- 15. 확장 메서드 정적 클래스 메소드
- 16. 편의상 Sprite 클래스를 확장 하시겠습니까?
- 17. 클래스를 확장 한 후 java.lang.VerifyError
- 18. 확장 메서드 대 정적 유틸리티 클래스
- 19. 사용하여 확장 방법은
- 20. IQueryable을 사용하여 확장 .Where 확장. <T> 구현
- 21. 다음과 같이 내가 ByteArray 클래스를 확장 한 확장 된 ByteArray
- 22. UIComponent 확장 클래스가 UIComponent 확장 클래스를 표시하지 않습니다.
- 23. C#에서 확장 메서드를 오버로드하는 방법이 있습니까?
- 24. 추상 클래스는 모든 확장 클래스를 알아야합니까?
- 25. 확장 메서드를 사용한 인스턴스화 및 초기화의 축약
- 26. URLHelp를 사용하여 정적 클래스에서 정적 메서드를 조롱하는 방법은 무엇입니까? (Moq)
- 27. EntityCollection에서 종종 확장 메서드를 노출하고 때로는 확장 메서드를 노출하지 않는 이유는 무엇입니까?
- 28. 속성을 사용하여 String 클래스 확장?
- 29. 메서드에서 정적 메서드를 사용하여 호출합니까?
- 30. 확장 관리자 확장
정적 클래스는 확장 할 수 없습니다. 이 질문의 중복을 검색하면 몇 가지 해결 방법이 표시됩니다. – BeemerGuy
왜 그걸 필요로할까요? 정적 클래스에는 컨텍스트가 없으며 정적 클래스 내부에서 수행 할 수있는 모든 작업은 코드의 다른 위치에서 수행 할 수 있습니다. –
@Amby - 나는 당신이 조직의 전문가만을 위해 그것을하고 싶어 할지도 모른다고 생각합니다. 물론 필요한 방법으로 정적 ImageUtility 클래스를 만들 수 있습니다 (이 대답에 따라 그는 어떻게 든해야 할 것입니다).하지만 OP가 추가 클래스가 필요없는 방식으로 코드를 구성하려고합니다. . 불행히도, 당신은 할 수 없습니다. (나는 똑같이하기 위해 여기에왔다). – MattW