2011-12-08 3 views
2

바로 가리 키기. 나는 간단한 상속 모델일반 상속 및 대표자

class Base {} 
class Inh : Base {} 

을 가지고 있고 이런 식으로 뭔가하고 싶은 말을하자 (참고 -이 코드는 컴파일되지 않습니다) :

class Test 
{ 
    private Dictionary<Type, Action<Base>> dict; 

    public Test() 
    { 
     dict = new Dictionary<Type, Action<Base>>(); 
    } 

    public void Test(Inh inh) 
    { 
    } 

    public void Add<T>(Action<T> callback) 
     where T : BasePackage 
    { 
     dict.Add(typeof(T), callback); 
    } 
} 

주요 아이디어는 같은 사전을 사용하는 것입니다 함수 호출자.

dict[typeof(Inh)](new Inh()); 

불행하게도 나는 나 자신이 내가 도움을 요청하고있는 soulution을 찾을 수 없습니다 : 내가 콜백으로 Test FUNC를 추가 한 경우 예를 들어, 나중에 같은 것을 할 수 있습니다. 누구든지 어떤 제안이라도 있으면 감사하겠습니다.

+0

잘못된 방향에서이 문제에 접근 할 가능성이 있습니다. –

+0

왜 상속 + 함수 테이블이 혼합 되었습니까? –

+2

실제 목표는 무엇입니까? 이것을 어떻게 사용할 계획입니까? –

답변

4

유형을 강제 변환 할 수 있습니다. 조회하고 잘못된 유형의 대리자를 호출하는 경우 런타임에 잘못된 캐스트로 인해 실패 할 수 있습니다. 가능한 실패 사례는 위임이 대리인 사용에서 자동 반동에 대한 기준을 충족하지 않는 이유입니다.

public void Add<T>(Action<T> callback) 
     where T : Base 
    { 
     dict.Add(typeof(T), Base b => callback((T)b)); 
    } 
+0

위대한 작품! – Milcho