2010-07-07 24 views
33

Generikleri, "Where" deyimini kullanarak bir türle sınırlandırabilirim:Tek bir yöntemde birden çok genel tür kısıtlaması nasıl belirlenir?

public void foo<TTypeA>() where TTypeA : class, A 

İşlevimin iki genel türü varsa bunu nasıl yapabilirim?

public void foo<TTypeA, TTypeB>() where TTypeA : class, A && TTypeB : class, B 

Yukarıdakiler çalışmıyor. "TTypeB: class, B"

kuralını eklemek için doğru sözdizimi nedir

cevap

53
public void foo<TTypeA, TTypeB>() where TTypeA : class, A 
            where TTypeB : class, B 
+1

fazla bilgi MSDN, geçerli olan && yerine '). http://msdn.microsoft.com/en-us/library/d5x73970.aspx – LBushkin

+0

Herkese teşekkürler! İşe yarıyor. Bunu bir kez cevap olarak işaretleyeceğim. SO bana izin veriyor (görünüşe göre 9 dakika beklemek zorundayım) – Justin

8
public void foo<TTypeA, TTypeB>() where TTypeA : class, A where TTypeB : class, B 

dang, 20s hangi kural eklemek için doğru sözdizimi var. James Curran'a oy ver, önce o oldu.

+2

Ama bir tek liner var 8-) – Dani

6

Böyle bir şey mi var? `Nerede TTypeB: TTypeA

public void foo<TTypeA, TTypeB>() where TTypeA : class where TTypeB : class 
0

sadece başka where

onlar mümkün (çıplak kısıtlamaları gibi kısıtlamalar diğer tür bazı açıklarsınız genel tür parametreleri üzerindeki kısıtlamalar hakkında
+0

Doğru değil, sadece bir kısıtlama ek türler olmadan yerleştirilebilir –

İlgili konular