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

  • Ciaran Blumenfeld

    Ciaran Blume

    20 NİSAN 2009
  • MyTiredBones

    MyTiredBones

    2 Temmuz 2013
  • Pituvision

    Pituvision

    11 Mart 2006