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