我正在使用MEF和WebAPI(自託管),並且我注意到了一些我無法弄清楚的奇怪行爲。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是正確的嗎?它不應該編譯。 –