2012-11-06 15 views
5

aşağıdaki kod örneği göz önünde bilinen genel türü ya da yöntem hatası tip parametre olarak kullanılamaz derleme hatası olması durumunda, genel argümanın Concrete türüne atanabileceğini kontrol ettim. Yani teoride, Bar sınıfının bir örneğini oluşturmanın bir yolu olması gerektiğine inanıyorum.tipi 'T' <code>Concrete</code><code>Base</code> türeyen tip

Derleme hatasını kaldırabilmemin bir yolu var mı? Argümanı yayınlamanın bir yolunu düşünemiyorum. derleme hatasının


tam metni:

Error 14 The type 'T' cannot be used as type parameter 'T' in the generic type or method 'Bar'. There is no implicit reference conversion from 'T' to 'Concrete'.

+1

Bu benim için derler ... bu * gerçek * örnek mi? gerçek kodunuzda belki de parametreler var mı? –

+1

Kodunuz, hata mesajıyla eşleşmiyor. Şüphesiz '();' –

+0

'yazdınız. Foo'nun "T: Beton" un olmadığı bir sebebi var mı? – Servy

cevap

4

derleyici şu anda Base sınırlamak T aslında Beton olduğunu bilmek bir yol vardır ve bu daha önce test bile.

Yani:

Type type = typeof(Bar<>); 
Type generic = type.MakeGenericType(typeof(T)); 
var x = Activator.CreateInstance(generic); 

bunu yapmak için şans izin vermeyin.