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

  • Chuck Testa

    Chuck Testa

    14 AĞUSTOS 2011
  • Dom Esposito

    Dom Esposito

    26 Mayıs 2011
  • HSmasteryoda .

    HSmasteryoda

    22 Ocak 2010