유형 매개 변수로 반사 형을 사용할 수 있습니까? 예 : 나는 전달 된 객체를 기반으로 persister 선택하려면 : 만 반사를 통해리플렉션의 유형을 유형 매개 변수로 사용할 수 있습니까?
IPersister GetPersisterFor(IEntity entity)
{
return GetPersisterFor<entity.GetType()>(); // <-- this cannot be compiled
}
IPersister GetPersisterFor<TEntity>() where TEntity : IEntity
{
//some logic to get persister...
}
악이라고 부르는 이유는 무엇입니까? :) –
@Rhys 왜냐하면 나는 그것을 무언가라고 부를 필요가 있었기 때문이다. –
+1 또한, 호출 트리 위로 제네릭 형식 매개 변수'T'를 밀면된다. 어떤 시점에서,'entity'의 정확한 타입은 아마 알려질 것입니다. 그래서 그 시점부터'GetPersisterFor'까지의 모든 메소드가'T'를 generic 타입으로 유지한다면'dynamic'을 사용할 필요가 없습니다. 이것이 가능하지 않다면 (최상위 호출자는'IYo' 타입의 변수 만 사용할 수 있습니다), 이것은'MakeGenericMethod' 솔루션의 가장 좋은 지름길입니다. – jam40jeff