불행히도 문서화되지 않은 기존 코드를 사용하고 있는데,로드하는 플러그인의 메소드를 호출하는 방법을 이해하는 데 문제가 있습니다.컴파일러는 이러한 Generic Plugin Interface 인스턴스 메소드를 어떻게 처리합니까?
현재 나의 목표는 플러그인 관리자를 통해로드 된 메소드 중 하나에 들어가는 것입니다. 예외가 발생하기 때문입니다. 그러나 디버깅 기호를 얻으려면 소스에서 pluginManager를 다시 작성해야했고이 새로운 DLL 버전을 참조 할 때 컴파일러가 팔을 던졌습니다.
는코드는 플러그인의 세부 사항을 알고하지 않기 때문에, plug.Instance
로 플러그인을로드하고 그래서 plug.Instance.ReturnLeaNumber();
이 컴파일러 오류가 의미가 같은 특정 메서드에 액세스 나타납니다. 필자가 혼동스럽게 생각하는 것은 컴파일러가 런타임 전에 플러그인이 초기화되지 않은 곳을 어떻게 알았는지입니다. 이전 DLL로는 작동하지 않는 코드를 단계별로 실행할 수 있습니다!
이것은 프로그램이 플러그인을로드하는 예입니다.
plug = GenericServicePlugins.AvailablePlugins.Find(Application.StartupPath + "\\Dlls\\SchoolInterface.dll");
// Compiler doesn't like this next line anymore though
plug.Instance.Initialize(null, null);
내 재건 라이브러리와 이전에 작업 한 사이에 차이가있는 경우, 내가 어떻게 말할 수있는 버전은 우리의 소스 제어에있는 사람과 일치한다. 찾고자하는 부분에 대한 조언을 부탁드립니다.
public interface IGenericPluginMasterInterface
{
String returnName();
void Initialize(ExceptionStringResources.Translate ExceptionStrings);
Object ExecuteFunction(String macAddress, bool log, String functionName, LoginCredentials logonCredentials, WebConfiguration webConfig,
Int64 dataLinkId, DataLinkParam[] dataLinkParams, String dataName,
DataParam[] dataParams, Object[] additionalParams);
}
Rest of Manager code on PasteBin
어떻게 컴파일러는 실행하기 전에 이러한 plug.Instance.Method()
방법에 대해 알고 있습니까?
편집 :
꽤 아직이 밖으로 일을하지했지만, 부분적으로 "GenericPluginServices"을 반영 내가 놓친는 "PluginsService"파일이 있었다. 이 오류는 필자가 조사한 현재 사용하지 않는 플러그인과 관련된이 클래스의 일부를 제거했을 때 발생할 수 있다고 생각합니다. 그러나 나는이 다른 코드 스 니펫을 게시하는 것이 질문에 도움이 될 것이라고 생각했다.
PluginService.cs code GenericPluginService code
'찾기'가 반환하는 유형은 무엇입니까? 'AvailablePlugin'입니까? –
FindPlugin 메서드는이 "colAvailablePlugins = new Types.AvailablePlugins();"를 반환합니다. – Amicable
'Find'가 아니라'FindPlugin'을 의미했지만 코드에서 찾았습니다 –