SORU
8 NİSAN 2009, ÇARŞAMBA


Genel tür örnek oluşturmak mı?

BaseFruit ** 3, can kabul eden bir kurucu varsa böyle genel bir yöntem meyve bir parça başlatılamadı?

public void AddFruit<T>()where T: BaseFruit{
    BaseFruit fruit = new T(weight); /*new Apple(150);*/
    fruit.Enlist(fruitManager);
}

Bir örnek yorum arkasına eklenir. Sadece BaseFruit parametresiz bir kurucu verdim ve üye değişkenler üzerinden her şeyi doldurun eğer bunu yapabilirim gibi görünüyor. Benim gerçek kod (meyveli) bu oldukça pratik.

-Güncelleme-
Herhangi bir şekilde o zaman kısıtlamaları tarafından çözülebilir mi öyle görünüyor. Cevaplar üç aday çözümler vardır:

  • Fabrika Desen
  • Yansıma
  • Aktivatör

Yansıma en azından temiz olduğunu düşünürüm, ama diğer ikisi arasında karar veremiyorum.

CEVAP
8 NİSAN 2009, ÇARŞAMBA


Ayrıca daha basit bir örnek:

return (T)Activator.CreateInstance(typeof(T), new object[] { weight });

Yeni kullanmayı unutmayın (T) kısıtlama derleyici derleme zamanında ortak parametresiz yapıcı bir kontrol yapmak için sadece, gerçek kod türü oluşturmak için kullanılan Aktivatör sınıftır.

Var olun kendinizi ile ilgili özel kurucu mevcut, ve bu tür bir gereksinim olabilir bir kod koku (ya da daha doğrusu bir şey gerekir sadece denemek önlemek içinde geçerli sürümü, c#).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Learn Math Tutorials

    Learn Math T

    20 Kasım 2011
  • michaeljacksonVEVO

    michaeljacks

    2 EYLÜL 2009
  • Ordetta Price

    Ordetta Pric

    12 EYLÜL 2011