将args从主应用程序传递给插件

时间:2011-04-09 22:41:11

标签: c# plugins

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

3 个答案:

答案 0 :(得分:0)

您是否正在创建具有可插入组件的应用程序? IE和具有接口的应用程序,您将通过引用一个遵循某个接口的程序集来动态激活实例?

答案 1 :(得分:0)

尝试这样的事情:

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

答案 2 :(得分: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);