2013-01-25 3 views
5

원하는 작업은 제네릭 형식을 제약 조건이있는 매개 변수로 사용하는 메서드입니다. 그러나, 제약 조건의 유형은 두 번째 제네릭 형식을 가지고,하지만 난 방법은 두 번째 입력이 무엇인지에 관계없이 작업 할 :일반적인 제약 조건을 가진 일반 메서드

public class IEvent<T> where T : EventArgs { } 
public class EventManager 
{ 
    public void DoMethod<T>() where T: IEvent<???> 
    { 
    } 
} 

특히, 내 EventManager 클래스는 모든 종류의 이벤트를 수신해야하기 위해 노력하고있어 그런 다음 그걸로 뭔가를하십시오. 나는 물건을 지나치게 복제하고 있는가, 아니면이 행할 수 있는가?

void DoMethod<TEvent, TArgs>() where TEvent : IEvent<TArgs> where TArgs : EventArgs {} 

답변

11

당신은 두 번째 제약 조건을 사용해야합니다.

public class IEvent<T> where T : EventArgs { } 
public class EventManager 
{ 
    public void DoMethod<T, U>() where T : IEvent<U> where U : EventArgs 
    { 
    } 
} 
1

이 시도 :