MEF实施

时间:2016-06-22 17:35:01

标签: c# mef

我正面临着MEF实施的概念问题。请参阅下面的代码。

合同大会 - 这是基础设施代码

public interface IHandler<T> 
{
   bool ProcessRequest(T requestObject);
}

AddIn程序集(不同的团队将贡献他们的AddIn)

[Export(typeof(IHandler<MyRequestObject>))]
public class SampleHandler : IHandler<MyRequestObject>
{

   public bool ProcessRequest(MyRequestObject requestObject)
   {
      // My Code
      return false;
   }
}

public class MyRequestObject
{
    public string Property1 { get; set; }
    public string Property2 { get; set; }
}

导入程序集:基础结构代码

public class HandlerHelper
{
    [Import(typeof(IHandler<MyRequestObject> ))]
    public IHandler<MyRequestObject> PlugIn { get; set; }


    private CompositionContainer _container;

    public HandlerHelper()
    {
        // Coode to fill the imports of this object

        this._container.ComposeParts(this);
    }

    public bool ExecuteHandler()
    {

        // Dynamically create MyRequestObject and 
        // pass it as parameter to below call            

        //PlugIn.ProcessRequest(varMyRequest);

        return false;
    }
}

内部导入器程序集我在

上遇到编译错误
[Import(typeof(IHandler<MyRequestObject> ))]
public IHandler<MyRequestObject> PlugIn { get; set; } 

此程序集无法识别MyRequestObject,因为它在当前程序集中不存在但存在于不同的加载项程序集中。

也在ExecuteHandler()中我想动态创建MyRequestObject的对象,然后再次它是不可见的,因为它存在于不同的程序集中

如果有人能帮助我或建议我采用其他方法,我将不胜感激

0 个答案:

没有答案