Я работаю с MEF и WebAPI (Self-hosting), и я заметил странное поведение, которое я не могу понять.MEF/WebAPI Странное поведение
Этот интерфейс/класс находится в отдельной сборке библиотеки классов.
public interface IQueryEngine
{
IEnumerable<T> Get<T>();
}
[Export("QueryEngine" ,typeof(IQueryEngine))]
public class QueryEngine : IQueryEngine
{
public IEnumerable<T> Get<T>()
{
// T is object instead of ManagedElementDTO - ?
return new ManagedElementDTO();
}
}
Этот контроллер в проекте WebAPI:
[Export]
public class ComputerSystemController : ApiController
{
[Import("QueryEngine", RequiredCreationPolicy = CreationPolicy.Shared)]
private IQueryEngine _engine;
// GET api/ComputerSystem
public IEnumerable<ManagedElementDTO> GetComputerSystems()
{
var result = _engine.Get<ManagedElementDTO>();
return null;
}
}
Оба проекта имеют ссылки на библиотеки классов, содержащей ManagedElementDTO
.
При вызове QueryEngine.Get()
параметры типового типа являются «объектом» вместо "ManagedElementDTO"
. Можете ли вы сказать мне, почему это происходит? Что я могу сделать?
Вы уверены, что _engine.Get верен? Он не должен компилироваться. –