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

  • Damien Hayes

    Damien Hayes

    11 Mart 2008
  • RFS Dan

    RFS Dan

    22 Temmuz 2014
  • skiesofblack.net

    skiesofblack

    14 HAZİRAN 2009