2013-01-25 21 views
5

Quello che voglio fare è un metodo che accetta un tipo generico come parametro con un vincolo. Tuttavia, il tipo di vincolo ha anche un secondo tipo generico, ma voglio il metodo di lavorare indipendentemente da ciò che la seconda digitazione è:Metodi generici con vincoli generici

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

In particolare, sto cercando di avere la mia classe EventManager ricevere qualsiasi tipo di evento e poi fare qualcosa con esso. Sono troppo complicato, o è fattibile?

risposta

11

è necessario utilizzare un secondo vincolo:

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

Prova questa.

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