2011-04-09 4 views
1

플러그인의 문자열 및 int 배열을 전달해야하지만 런타임 중에 인수가 변경 될 수 있습니다. 이를 달성하는 가장 좋은 해결책은 무엇입니까?메인 앱에서 args를 플러그인으로 전달

+2

당신이 무엇을 달성하고자하는 매우 불분명 - 몇 가지 예제 코드를 가지고? – BrokenGlass

+0

필자는 메인 애플리케이션에서 일부 데이터 (문자열 [] 및 int 등)를 플러그인으로 전달하는 예제가 필요하다. 나는 CreateInstace ..와 함께 노력했지만 몇 가지 문제가 있고 그것이 아이디어인지조차 모른다. 사용자가 주 앱의 파일 및 int 목록을 선택했다고 가정 해 보겠습니다. 그런 다음 파일 목록을 표시해야하는 플러그인을로드합니다. 물론 그것은 단지 간단한 예일뿐입니다. – yende

답변

0

플러그인 구성 요소가있는 응용 프로그램을 만들고 있습니까? IE 및 일부 인터페이스를 준수하는 어셈블리를 참조하여 인스턴스를 동적으로 활성화 할 수있는 인터페이스가있는 응용 프로그램? 이 같은

0

시도 뭔가 :

(T) Activator.CreateInstance(typeof(T), param1, param2); 
0

나는 당신의 플러그인 모두가 지정된 인터페이스를 구현하는 것이, 여기에 가정의 비트를 만들고있어. 예를 들어 :

public interface IPluginComponent 
{ 
    // Example other method - not relevant to this example 
    void Start(); 
    // Example other method - not relevant to this example 
    void Stop(); 
    // Method that is called and passed the data 
    void DoWork(object workData); 
} 

당신은 내가 인터페이스에 표시 한 DoWork 방법을 알게 될 것이다. 의도적으로 막연한 object workData 매개 변수를 제공하여 필요에 맞게 조정할 수 있으므로 플러그인에 적합한 데이터를 전달할 수 있습니다.

그럼, 당신이 할 수있는 것은 :

// Call a method that returns the appropriate plugin 
var pluginToCall = GetPlugin(); 

// Files that are to be passed to plugin 
List<File> files = GetFilesToPassToPlugin(); 

// Call the plugin and pass the List<File> to it 
pluginToCall.DoWork(files); 
관련 문제