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

  • Helder Barreto

    Helder Barre

    22 Mayıs 2006
  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011
  • Troy Hunt

    Troy Hunt

    29 EYLÜL 2011