.net - 확장 - 메서드 에 구현 즉 rva 가 없으므로




.Net에서 확장 메서드를 사용하기위한 최상의 방법은 무엇입니까? (4)

나는이 모든 것을 어떤 방법 으로든 사용하는 것을 보았으며, 잘못된 방법으로 사용한다고 비난 받았다. (그런 경우에, 나는 그 점을 보여주기 위해 그 방법을 사용했다.)

그렇다면 확장 방법을 사용하는 가장 좋은 방법은 무엇이라고 생각합니까?

개발 팀이 확장 방법 라이브러리를 만들어 다양한 프로젝트에 배포해야합니까?

오픈 소스 프로젝트 형태로 공통 확장 메소드 모음이 있어야합니까?

업데이트 : 조직 전체 확장 메서드 라이브러리를 만들기로 결정했습니다.


Extensions 메서드를 내 Utils 클래스의 Core 라이브러리에 포함 시켰습니다. 내 프레임 워크로 작업하는 사람들이이 메서드를 유용하게 사용할 수 있기 때문에 최종 개발자가 확장 메서드 라이브러리를 선택할 수있는 대량 배포의 경우, 나는 자신의 네임 스페이스, 심지어 자신의 프로젝트 파일까지 모든 확장 기능을 추가하여 사람들이 참조 나 using 문을 추가하거나 필요한 경우 간단하게 추가하도록 선택할 수 있도록 조언합니다.

Core.Extensions.Base64Encode(str);

My Utils 클래스는 전 세계에서 가장 친한 친구입니다. 확장 메소드가 나오기 전에 있었고, 우리 관계를 강화하는 데 도움이되었습니다. 가장 큰 규칙은 사람들이 가능한 확장 프레임 워크를 선택하는 것입니다.


확장 메서드가 어떤 용도로 사용되는지에 따라 다르다고 생각합니다.

  • 프로젝트의 특정 비즈니스 요구와 관련된 확장 메서드 (기본 데이터 형식이나 사용자 지정 개체에 연결되어 있는지 여부)는 여러 프로젝트에 분산되어있는 라이브러리에 포함되어서는 안됩니다.
  • 기본 데이터 유형 (int, string 등) 또는보다 광범위한 응용 프로그램이있는 제네릭과 관련된 확장 메서드를 패키징하여 여러 프로젝트에 분산시킬 수 있습니다.

Intellisense를 막히게되고 혼란 및 / 또는 오용으로 이어질 수 있으므로 거의 응용 프로그램이없는 Extension 메서드가 전역에 포함되지 않도록주의하십시오.


두 가지 확장 메소드 라이브러리 인 http://www.codeplex.com/nxlhttp://www.codeplex.com/umbrella 를 살펴볼 수 있습니다. 필자는 개인적으로 소스 코드를 보지 못했지만, 거기에있는 사람들이 당신에게 좋은 지적을 줄 수있을 것이라고 확신합니다.


Framework Design Guidelines, 2nd Edition의 다음 버전에는 확장 방법을 구현하기위한 지침이 있지만 일반적으로 다음과 같습니다.

확장 메서드는 "의미 론적 의미를 갖는 곳"으로 정의하고 모든 구현과 관련된 도우미 기능을 제공해야합니다.

또한 모든 .NET 언어가 확장 메서드를 확장으로 호출 할 수 없으므로 System.Object를 확장하지 않아야합니다. (예를 들어, VB.NET은 정적 확장 클래스에서 일반적인 정적 메서드로 호출해야합니다.)

인터페이스를 확장하지 않는 한 확장 유형과 동일한 네임 스페이스에 확장 메소드를 정의하지 마십시오.

확장 메소드를 호출하지 않기 때문에 "실제"메소드와 동일한 서명으로 확장 메소드를 정의하지 마십시오.







.net