2012-04-09 3 views
1

두 클래스가 있습니다 : 수퍼 클래스 및 파생 된 서브 클래스 : 수퍼 클래스. 나는 일반적인 방법을 가지고있다 :수퍼 클래스의 제네릭 메서드에서 서브 클래스에 대한 일반 메서드 호출

내가 알기로는, Superclass를위한 일반적인 방법에서 Subclass를위한 일반적인 방법을 호출하길 원한다. 그러나 컴파일러는 내가 할 수 없다고 말합니다 :

The type 'T' cannot be used as type parameter 
'T' in the generic type or method 'DoSmth2<T>(T)'. 
There is no implicit reference conversion from 'T' to 'Subclass' 

저는 .Net 3.5를 사용합니다. 나는 내가 위에서 쓴 것처럼 그것을 할 수 없다는 것을 이해하지만, 그것을 할 방법이 있습니까?

답변

3

당신은 그럴 필요가 없습니다.

public void DoSmth<T>(T obj) 
    where T : Superclass 
{ 

    //untested but something like this 
    Subclass obj2 = (obj as Subclass); 
    if(obj2 != null) 
    { 
     DoSmth2(obj2); 
    } 
    //... 
} 
+0

다음과 같이 먼저 "개체"에 캐스트해야합니다. Subclass obj2 = (Subclass) (object) obj; –

+0

내 마지막 편집이 그 문제를 해결한다고 생각합니다. –

+0

예, 작동합니다. 고맙습니다. – mao

관련 문제