Frage

Ich versuche, durch die Ergebnisse einer Funktion Schleife, die ein anonymes Objekt der Ergebnisse zurückkehren.

public static object getLogoNav()
{
  XDocument loaded = XDocument.Load(HttpContext.Current.Request.MapPath("~/App_Data/LOGO_NAV_LINKS.xml"));

  var query = from x in loaded.Elements().Elements()
              select new
              {
                 Name = x.FirstAttribute.Value,
                 Value = x.Value
              };

  return query;
}

Code-Behind-Seite:

  var results = Common.getLogoNav();
  foreach(var nav in results) {
     string test = nav.Name;
  }
War es hilfreich?

Lösung

Sie können keine anonymen Klasse als Rückgabetyp in C # 3 (und 4 für diese Angelegenheit) haben, und Sie können ein Objekt nicht an einen anonymen Typ umgewandelt. Ihre drei Optionen sind:

  • Dadurch könnte die Schleife im Rahmen der anonymen Klasse (die meiste Zeit, ist dies die Methode)
  • Casting zum Objekt und die Reflexion (langsam und nicht sehr einfach zu tun, wenn Sie einige Ausdrucksbaum Magie tun)
  • Umwandlung in eine benannte Klasse und die Rückkehr und Beispiel dafür.
  • (In C # 4) Sie einige dynamische Art Magie erzeugen können einen ähnlichen Effekt zu erzielen, aber das wäre als Option 2 mit einigem syntaktischen Zucker wirklich gleich sein.

Andere Tipps

Jon Skeet schrieb eine Eintrag über anonymen Typ zurück. Ich hoffe, Sie nutzen sie nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top