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이 맞습니까? 컴파일 할 수 없습니다. –