13 Ocak 2010, ÇARŞAMBA
Ienumerable ve Özyineleme kullanarak getiri elde
WebForms sayfasındaki denetimleri bulmak için kullanıyorum o IEnumerable<T>
bir yöntem var.
Bu yöntem yinelemeli ve bazı sorunları yield return
returnig özyinelemeli aramayı değerini istediğim zaman bu tür dönen geçiriyorum.
Benim kod aşağıdaki gibi görünüyor
public static IEnumerable<Control>
GetDeepControlsByType<T>(this Control control)
{
foreach(Control c in control.Controls)
{
if (c is T)
{
yield return c;
}
if(c.Controls.Count > 0)
{
yield return c.GetDeepControlsByType<T>();
}
}
}
Bu "ifade tipi" hata. dönüştürmek bir anda atar Ancak bu yöntem döndürür yazarsanız IEnumerable<Object>
kod oluşturur, ama yanlış çıktı türü döndürülür.
yield return
kullanarak ederken, özyineleme kullanarak bir yolu var mı?
CEVAP
13 Ocak 2010, ÇARŞAMBA
IEnumerable<T>
, yield return
döndüren bir yöntem içinde T
, IEnumerable<T>
olmayan bir dönüş var.
Değiştirin
yield return c.GetDeepControlsByType<T>();
ile:
foreach (var x in c.GetDeepControlsByType<T>())
{
yield return x;
}
Bunu Paylaş:
Nasıl Onaltılık renk kodu kullanarak R...
Form giriş alanları jQuery kullanarak ...
Elde XPath kullanarak öznitelik...
Selenyum WebDriver içinde WebElement H...
Ziyaretçi IP adresi Python Flask kulla...