我正面临着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的对象,然后再次它是不可见的,因为它存在于不同的程序集中
如果有人能帮助我或建议我采用其他方法,我将不胜感激