의 서명을 정의 할 수 있습니다. 각 플러그인은 플러그인 인터페이스를 구현해야하며 하나의 매개 변수 (자원 컨텍스트)를 수신하는 생성자를 더 제공해야합니다. 나는 반사를 통해 볼 플러그인 클래스의 인스턴스 동안는 인터페이스 내가 플러그인과 함께 응용 프로그램을 확장하는 메커니즘을 제공하는 닷넷 응용 프로그램을 C#을 -constructor
, 필요한 생성자가 존재하는 경우 예, 나는 (반사를 통해) 클래스를 인스턴스화합니다. 생성자가 없으면 원하는 생성자를 사용할 수 없기 때문에 플러그인을 만들 수 없다는 예외를 throw합니다.
제 질문은 플러그인 인터페이스에서 생성자의 서명을 선언 할 수있는 방법이 있다면 플러그인 인터페이스를 구현하는 모든 사람도 생성자에게 원하는 서명을 제공해야한다는 것입니다. 이렇게하면 플러그인을 쉽게 만들 수 있습니다.
나는 그런 가능성이 나는 그런 기능이 인터페이스를 위해 설계되었지만, 아마도 누군가가이 작업을 수행 성명을 알고 무엇을 주요 목적으로하지 떨어진다 생각하기 때문에 존재한다고 생각하지 않는다, 뭔가 같은 :
public interface IPlugin {
ctor(IResourceContext resourceContext);
int AnotherPluginFunction();
}
나는 매개 변수없이 생성자를 변경하고 속성을 통해 자원 컨텍스트를 설정하는 것을 원하지 않는다고 추가하고 싶습니다. 이렇게하면 플러그인 작성이 훨씬 더 복잡해지기 때문입니다. 플러그인을 작성하는 사람은 프로그래밍에 익숙한 사람이 아닙니다. 플러그인은 앱에서 시각화 할 통계 데이터를 계산하는 데 사용됩니다. 모든 답변을
감사합니다.
필자는 플러그인 프로그래머가 추상 클래스를 상속 받아 자신의 기본 클래스에서 상속받을 가능성이 없어지기를 원치 않기 때문에 인터페이스로 둡니다. . 게다가 추상 클래스로부터 파생되었다고해서 플러그인 프로그래머가 필요한 생성자를 실제로 제공하지는 않습니다. 프로그래머는 원하는 매개 변수를 포함하는 하나의 생성자 만 추가 할 수 있지만 추가 매개 변수가있는 경우에도 문제가 발생합니다 (Ken Browning의 답변에 대한 주석 참조). 나는 이러한 속성을 원하지 않는 내 게시물에서 언급했지만
, 나는 나는 그것이 가장 적합한 솔루션입니다 내 상황에서 생각하기 때문에 가능으로 대니 Varod의 답을 표시했다. 대답 한 모든 사람들에게 감사드립니다.
+1. –