SORU
8 Temmuz 2011, Cuma


Nasıl parametreleri gibi anonim türleri geçmek için?

Nasıl diğer fonksiyonlara parametre olarak anonim türleri geçebilir miyim? Örnek:

var query = from employee in employees select new { Name = employee.Name, Id = employee.Id };
LogEmployees(query);

query burada değişken güçlü bir tür yok. Nasıl benim LogEmployees fonksiyonu kabul etmek için tanımlamak gerekir?

public void LogEmployees (? list)
{
    foreach (? item in list)
    {

    }

}

Diğer bir deyişle, I ? işareti yerine kullanılır.

CEVAP
8 Temmuz 2011, Cuma


Bu anonim türü için bir sınıf yapmak gerektiğini düşünüyorum. Bu bence yapılacak en mantıklı şey olurdu. Ama eğer gerçekten istemiyorsanız, dinamikleri kullanabilirsiniz:

public void LogEmployees (IEnumerable<dynamic> list)
{
    foreach (dynamic item in list)
    {
        string name = item.Name;
        int id = item.Id;
    }
}

Bu olduğunu unutmayındeğilkesinlikle yazılmış, eğer öyleyse, örneğin, EmployeeName Adı değişiklikleri, çalışma zamanı kadar bir sorun olduğunu bilemezsin.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BroadCity

    BroadCity

    10 ŞUBAT 2010
  • Lena Danya

    Lena Danya

    11 NİSAN 2010
  • Matt Stokes

    Matt Stokes

    22 Ocak 2008