Что вы можете сделать, это использовать Func<T, U>
, и MEF будет обрабатывать делегат за вас.Например:
public class FirstClass
{
[Export("Method")]
public string Method(string arg)
{
return arg.ToUpperInvariant();
}
}
public class SecondClass
{
[Import("Method")]
public Func<string, string> Func;
}
В этом примере я экспортирую именованный контракт, и MEF автоматически определит, как подключить целевой делегат для меня.Я мог бы также Export
изменить как Func<string, string>
.
Так что в вашем случае я бы изменил ваш Export
на:
[Export("GetConfiguration")]
И ваше Import
и целевое свойствоto:
[Import("GetConfiguration")]
public Func<string, Configuration> GetConfig { get; set; }
И просто используйте делегата для выполнения импортированной функции.
Надеюсь, это поможет.