How to export & import functions and execute them with MEF?

Viewed 5306

I am creating an application that imports several plugins. I need the ability to execute functions that are implemented in each of the plugins. For example, I need to do something like this.

/////////////////////////////////////////////////////////////////////////////////
MainApp:
[ImportMany(?)]
public IEnumerable<Lazy<?>> PluginFunctions1 { get; set; }

[ImportMany(?)]
public IEnumerable<Lazy<?>> PluginFunctions2 { get; set; }

foreach (f1 in PluginFunctions1)
{
   f1();  // execute Function1 from each plugin
}

foreach (f2 in PluginFunctions2)
{
   string result = f2(val);  // execute Function2 from each plugin
}

/////////////////////////////////////////////////////////////////////////////////
Plugin:
[export(?)]
public void Function1()
{
}

[export(?)]
public string Function2(string value)
{
    return result;
}
/////////////////////////////////////////////////////////////////////////////////

Problem is that I am not sure how to define the import & export and how to exactly execute the function.

1 Answers
Related