2014-01-16 8 views
1

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" 대신 "개체"입니다. 왜 이런 일이 일어 났는지 말해 줄 수 있어요? 내가 무엇을 할 수 있을지?

+1

_engine.Get이 맞습니까? 컴파일 할 수 없습니다. –

답변

0

Panos가 암시 한 것처럼 구문이 잘못되었습니다. 나는 C#을 개발자 모르겠지만, Get에 전화를 같이한다고 생각 :

var result = _engine.Get<ManagedElementDTO>(); 

T는 어떤 유형이 명시 적으로 전달되고 있지 않기 때문에 object이며, object하지만 아무것도 유추 할 수 없습니다.

+0

예, 정확합니다. 오타가 수정되었습니다. 형식 매개 변수가 전달되면 "개체"를 얻습니다. – joek1975