我正在开发一个使用了MEF技术的应用程序。其中有一个核心库项目作为粘合剂,实现了以下功能:
CompositionContainer cc = new CompositionContainer(catalog);
cc.ComposeParts(this);
我已经在这个核心库中声明了以下所有的[Import]部分:
我已经在这个核心库中声明了以下所有的[Import]部分:
[Import(typeof(IHost))]
// The imported host form
public IHost Host
{ get; set; }
[Import(typeof(ILightStudents<?>))]
public ILightStudents<?> StudentsAPI { get; set; }
在其他具有[export]属性的库项目中实现IHost或其他接口没有问题,但这里的问题是我声明了ILightStudents如下:
public interface ILightStudents<T> where T:class
{
IEnumerable<T> Students();
T GetStudent(long id);
}
但是正如您在之前的代码中看到的那样,我在导入部分放置了“?”标记。正如您所知道的泛型方法的目的是,您可以使用任何类或类型来实现它们。而这里我想要在其他库项目中使用我的适当类型来实现ILightStudents,但我不能在[import]部分没有指定类型。
请帮帮我好吗?
编辑:
我几乎可以通过使用动态类型绑定来解决这个问题。