문제

나는 지금 아주 정기적으로 사용하는 '도우미'스타일 확장 방법이 몇 개 있습니다. (그들은 대부분 매우 단순하고 직관적이며 악을 위해 일하기 때문에 악의적이지 않으므로, 내가 그것들을 사용해야하는지 여부에 대한 토론으로 내려 가지 마십시오). 그들은 크게 Core .NET CLR 클래스를 확장하고 있습니다.

현재 여러 프로젝트에서이를 사용할 수 있도록 솔루션 내 각각의 새로운 프로젝트에 내선 메소드를 보유하는 'ExtensionMethods.cs'파일을 복사해야합니다.

솔루션 내의 여러 프로젝트를 통해 작동하기 위해 확장을 정의하거나 '확장'DLL로 랩핑 할 수 있습니까? 아니면 프로젝트 범위에 국한되어 있습니까?

편집하다 '전용 프로젝트'답변은 완벽하게 유효하지만, 나는 그가주는 접근 방식을 선호하는 마르크 시드를 선택했습니다. 지금까지 모든 답변에 감사 드리며, 모두 좋은 답변 이었기 때문에 모든 것을 고양 시켰습니다.

도움이 되었습니까?

해결책

확장 방법에 대해서만 전체 프로젝트를 만들고 싶지 않다면 파일을 복사하지 않고도 동일한 파일을 별도의 프로젝트에 연결할 수 있습니다.

  1. Solution Explorer에서 대상 프로젝트를 선택하십시오.
  2. 프로젝트 메뉴를 선택하십시오.
  3. 기존 항목 추가를 선택하십시오.
  4. 기존 항목 추가 대화 상자에서 링크 할 항목을 선택하십시오.
  5. 열린 버튼 드롭 다운 목록에서 링크로 추가를 선택하십시오.

다른 팁

가장 좋은 방법은 모두 단일 프로젝트에 넣고 DLL을 만드는 것입니다. 그런 다음 해당 프로젝트를 프로젝트 참조로 포함 시키거나 DLL을 이진 참조 (아마도 더 나은 선택)로 포함시킬 수 있습니다.

확장을 별도의 프로젝트에 넣고 해당 프로젝트를 모든 새로운 솔루션에 포함시킬 수 있습니다.

다른 응용 프로그램이 확장 프로젝트를 변경하려고 시도하면 해당 방법을 사용하는 모든 프로젝트를 다시 테스트해야합니다.

Scott Dorman도 그의 게시물에서도 맞습니다: 원하는 변경을 원하지 않으면 새로운 프로젝트에 포함 된 DLL 라이브러리로 컴파일 할 수 있습니다 (컴파일되지 않은 프로젝트 포함).

.NET 플랫폼에 대한 확장 프로그램을위한 프로젝트를 작성하고 각 응용 프로그램 프로젝트에서 하나의 프로젝트를 참조하십시오. 말할 필요도 없습니다. 응용 프로그램은 응용 프로그램 프로젝트에 들어갑니다.

다음과 같은 다양한 플랫폼 라이브러리를 살펴볼 수도 있습니다. 우산, 기본 플랫폼에 확장 제품군을 제공합니다.

몇 가지 답변에 따르면 누군가가 확장 기능을 공통 어셈블리에 넣을 것이라고 제안합니다. 그것이 정답입니다. 그러나 초보자에게는 이상한 일이 있습니다. Intellisense는 충분히 도움이되지 않았습니다. 내가 확장했다고 가정 해 봅시다 ObservableCollection a ReplaceRange 함수 / 방법. 연장 기능의 클래스가 이동 한 후 처음에는 컴파일러가 말합니다.error CS1061: 'System.Collections.ObjectModel.ObservableCollection<WhateverDto>' does not contain a definition for 'ReplaceRange' and no extension method 'ReplaceRange' accepting a first argument of type 'System.Collections.ObjectModel.ObservableCollection<WhateverDto>' could be found (are you missing a using directive or an assembly reference?)그런 다음 문제가 발생합니다 ReplaceRange 전화, 귀하는 적절한 사용 명령문을 자동으로 포함 시키겠다는 제안을받지 못합니다. 누군가 그 시점에서 자신이 잘못했다고 생각할 수도 있습니다. 그러나 확장 방법이 어디에 있는지 알아야하는 것은 없으며 메소드 네임 스페이스에 대한 사용 명령문을 수동으로 입력해야합니다. 당신이 그 권리를 얻은 후에는 당신의 소스가 컴파일됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top