2011-04-09 31 views
1

我需要将字符串和int数组传递给插件,但参数可以在运行时更改。实现这个目标的最佳解决方案是什么?从主应用程序传递参数到插件

+2

这是非常不清楚你想达到什么 - 有一些示例代码? – BrokenGlass 2011-04-09 22:42:07

+0

我只需要将一些数据(string []和int等)从主应用程序传递给插件的示例。我尝试了CreateInstace ..但我有一些麻烦,甚至不知道这是否是一个想法。比方说,用户在主应用程序中选择文件列表和int。然后加载必须显示文件列表的插件。当然这只是一个简单的例子。 – yende 2011-04-09 22:54:18

回答

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); 
相关问题