Team, мы внедрили MEF (новичок в этой концепции).Наша структура представляет собой интерфейс
public interface IAction
{
string DoPostUpdate(BaseSchema baseClass);
}
Создан один абстрактный класс как
[Export(typeof(IAction))]
public abstract class BaseActions : IAction
{
public virtual string DoPostUpdate(BaseSchema baseClass)
{
return "Inside abstract method";
}
}
И два класса, производные от этого абстрактного класса
[Export(typeof(IAction))]
public class GroupActions : BaseActions
{
public override string DoPostUpdate(BaseSchema baseClass)
{
return "Inside Group Action export";
}
}
[Export(typeof(IAction))]
public class PartyActions : BaseActions
{
public override string DoPostUpdate(BaseSchema baseClass)
{
return "Inside Party Action export";
}
}
Инициализация контейнера выполняется вотдельный проект как -
private CompositionContainer _container;
[ImportMany(typeof(IAction))]
public List<IAction> actionContract;
if (actionContract == null)
{
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(typeof(T).Assembly));
catalog.Catalogs.Add(new DirectoryCatalog(Settings.Default.ActionPluginPath));
_container = new CompositionContainer(catalog);
try
{
this._container.ComposeParts(this);
}
catch (CompositionException compositionException)
{
// Console.WriteLine(compositionException.ToString());
}
}
Теперь после инициализации actionContract
объект содержит в себе оба объекта класса.
Теперь наш вопрос, как мы можем назвать PartyAction
класса или GroupAction
класс DoPostUpdate
только в этой структуре?
Можете ли вы, пожалуйста, руководство?