SORU
8 Mayıs 2009, Cuma


C argümanları iletme# jenerik yeni() şablon tipi

Listeye eklerken kurucusu) T türü yeni bir nesne oluşturmak için çalışıyorum.

Bir derleme hatası alıyorum: hata iletisi:

'': Cannot değişken bir örneğini oluştururken, bağımsız değişken bulunur . T

Ama derslerimi yapıcı bir tartışma var! Bu nasıl iş yapabilirim?

public static string GetAllItems<T>(...) where T : new()
{
   ...
   List<T> tabListItems = new List<T>();
   foreach (ListItem listItem in listCollection) 
   {
       tabListItems.Add(new T(listItem)); // error here.
   } 
   ...
}

CEVAP
8 Mayıs 2009, Cuma


"Bayrak. yeni ile bağlamalısınız bir işlev, genel bir türünde bir örnek oluşturmak için

public static string GetAllItems<T>(...) where T : new()

Ancak bu sadece herhangi bir parametre olan kurucu aramak istediğiniz zaman çalışır. Burada durum böyle değil. Bunun yerine nesne oluşturma parametrelere dayalı sağlayan bir parametre sağlamak gerekir. Kolay bir işlevdir.

public static string GetAllItems<T>(..., Func<ListItem,T> del) {
  ...
  List<T> tabListItems = new List<T>();
  foreach (ListItem listItem in listCollection) 
  {
    tabListItems.Add(del(listItem));
  }
  ...
}

O zaman öyle hitap edebilirsin

GetAllItems<Foo>(..., l => new Foo(l));

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 30GB

    30GB

    14 AĞUSTOS 2006
  • BeginnersTech

    BeginnersTec

    8 NİSAN 2011
  • SavageLuxxxGaming - Daily NBA 2K15 & NBA Live 15 Enjoy And Subscribe!

    SavageLuxxxG

    11 Ocak 2013