2012-04-19 3 views
1

일반 메서드 (아래 코드 참조)가 있고 T가 특정 인터페이스 인 경우 일부 동작을 수행하려고합니다.
분명히 나는 ​​단지 typeof(T).IsAssignableFrom(IFoo)을 할 수는 있지만 반사가 비교적 느리기 때문에 가능하면 피하고 싶습니다.인터페이스의 generic 형식 매개 변수 테스트

이제 모호한 메서드 오류가 발생하기 때문에 제약 조건이있는 다른 메서드를 사용할 수 없다는 것을 알았습니다.

내가 원하는 것을 할 수있는 방법이 있습니까?
이 작업을 수행하려면 일부 아키텍처 문제가 있습니까? result -

public T Load<T>(string name) 
{ 
    T result = LoadFromName<T>(name); 

    if(T is IFoo) // Obviously doesn't work as T is a type, not a variable 
     (result as IFoo).FooMethod(); 

    return result; 
} 

답변

3

그러나 당신이 변수를 가지고! 무엇이 잘못 되었습니까

var asFoo = result as IFoo; 
if (asFoo != null) 
    asFoo.FooMethod(); 
+0

나는 얼마나 어리 석 었는지 믿을 수 없습니다! –

관련 문제