2009-06-08 12 views
254

Mögliche Duplizieren:
Generic methods and multiple constraintsC# -Generika Syntax für mehrere Typparameter Constraints

Ich brauche eine generische Funktion, die zwei Typen Einschränkungen aufweist, die jeweils von einer anderen Basisklasse erbt. Ich weiß, wie dies mit einer Art zu tun:

void foo<T>() where T : BaseClass 

Aber ich weiß nicht, wie dies mit zwei Arten zu tun:

void foo<TOne, TTwo>() where TOne : BaseOne // and TTwo : BaseTwo ??? 

Wie Sie das tun? (Unter Verwendung von .NET 2)

Antwort

451
void foo<TOne, TTwo>() 
    where TOne : BaseOne 
    where TTwo : BaseTwo 

Mehr Infos hier:
http://msdn.microsoft.com/en-us/library/d5x73970.aspx

+7

Suche nach "Einschränkende Mehrere Parameter", wenn Sie das alles nicht lesen wollen. – RichardOD

+0

Ist es möglich, eine Einschränkung zu haben, die dies tun würde: 'void foo () wo TOne: Klasse wo TTwo: Klasse wo TOne! = TTwo' so im Grunde wissen wir nicht, was TOne und TTwo sind, außer dass sie sind Referenztypen, aber können nicht gleich sein – IronHide

+0

@IronHide: Ich würde gerne hier falsch bewiesen werden ... aber ich bin 99% sicher, das ist nicht möglich :) –