Domanda

Sto cercando di scorrere i risultati di una funzione che sta restituendo un oggetto anonimo di risultati.

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;
}

codebehind page:

  var results = Common.getLogoNav();
  foreach(var nav in results) {
     string test = nav.Name;
  }
È stato utile?

Soluzione

Non puoi avere una classe anonima come tipo restituito in C # 3 (e 4 per quella materia) e non puoi lanciare un oggetto in un tipo anonimo. Le tre opzioni sono:

  • Esecuzione del ciclo nell'ambito della classe anonima (il più delle volte, questo è il metodo)
  • Casting su oggetto e utilizzo del riflesso (lento e non molto facile a meno che tu non faccia un po 'di magia ad albero delle espressioni)
  • Conversione in una classe denominata e restituzione e istanza di quella.
  • (In C # 4) puoi creare un tipo di magia dinamica per ottenere un effetto simile ma sarebbe lo stesso dell'opzione 2 con un po 'di zucchero sintattico.

Altri suggerimenti

Jon Skeet ha scritto un voce sulla restituzione del tipo anonimo. Spero che non lo usi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top