2015-09-02 17 views
6

Sto usando il metodo descritto di seguito. Questo risultato dinamico di ritorno.'oggetto' non contiene una definizione per dinamico

public static dynamic GetCouponDetailsbyCouponID(Guid couponID) 
     { 
      using (var loEntities = new Entities()) 
      { 
       dynamic nonWinnerGift = (from nw in loEntities.CorporateNonWinnerGift 
             join um in loEntities.Users on nw.UserID equals um.Id 
             where nw.IsDeleted != true && nw.CouponID == couponID 
             select new 
             { 
              FullName = (um.FirstName + " " + um.LastName), 
               Title = nw.Title, 
               Description = nw.Description, 
               LogoName = nw.LogoName, 
               CouponID = nw.CouponID, 
               IsDiscount = nw.IsDiscount, 
               Discount = nw.Discount, 
               Desclaiemer = nw.Desclaiemer 
              }).SingleOrDefault();  
       return nonWinnerGift; 
      } 
     } 

dynamic expandDoObject = new ExpandoObject(); 

quando sto cercando di accedere "couponData.LogoName" di un'eccezione di runtime dinamica gettato. Di seguito riportiamo la mia eccezione "Una prima eccezione di possibilità di tipo 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' si è verificato in ClosetAuctions.dll enter image description here Ulteriori informazioni: 'oggetto' non contiene una definizione per 'logoName'"

   var couponData = CorporateNonWinnerGiftBL.GetCouponDetailsbyCouponID(couponID); 

       if (couponData != null) 
       { 
        string fileName = couponData.LogoName; 
       } 
+0

perché stai usando il codice digitato in modo dinamico per passare i dati in giro? Questo non è javascript. – dcastro

+0

Ho due classi e voglio tornare a combinare entrambi i parametri usando la query linq. E non voglio creare classi separate. Quindi, per favore suggeriscimi cosa devo fare –

+0

Restituisce invece una classe aggregata, ad esempio. 'risultato della classe {pubblico WinnerGift WinnerGift {get; impostato; } Utente utente pubblico {get; impostato; }} ' – dcastro

risposta

2

"RuntimeBinderException" è già stato risposto negli articoli sottostanti per favore riferiscilo.

https://social.msdn.microsoft.com/Forums/en-US/30b916bf-7e59-4d8d-b7bc-076d4289a018/type-inference-turns-my-vars-to-dynamic?forum=csharplanguage

Provate a seguito di codice: public static dinamica GetCouponDetailsbyCouponID (Guid couponID) {

        using (var loEntities = new Entities()) 
            { 
             var nonWinnerGift = (from nw in loEntities.CorporateNonWinnerGift 
             join um in loEntities.Users on nw.UserID equals um.Id 
             where nw.IsDeleted != true && nw.CouponID == couponID 
             select new 
             { 
             FullName = (um.FirstName + " " + um.LastName), 

             Title = nw.Title, 

             Description = nw.Description, 

             LogoName = nw.LogoName, 

             CouponID = nw.CouponID, 

             IsDiscount = nw.IsDiscount, 

             Discount = nw.Discount, 

             Desclaiemer = nw.Desclaiemer 

            }).SingleOrDefault(); 

      dynamic d = new ExpandoObject(); 

      d.FullName = nonWinnerGift.FullName; 

      d.Title = nonWinnerGift.Title; 

      d.Description = nonWinnerGift.Description; 

      d.LogoName = nonWinnerGift.LogoName; 

      d.CouponID = nonWinnerGift.CouponID; 

      d.IsDiscount = nonWinnerGift.IsDiscount; 

      d.Discount = nonWinnerGift.Discount; 

      d.Desclaiemer = nonWinnerGift.Desclaiemer; 

      return d; 
     } 
    } 
+0

Un Plus per leggere effettivamente la domanda e il codice! lol Ottima risposta! –

3

Non è consigliabile usare oggetto dinamico nel vostro caso d'uso. Ma questa è la mia opinione.

In ogni caso, per accedere membro di oggetto dinamico,

string fileName = couponData.GetType().GetProperty("LogoName").GetValue(couponData, null); 
+0

Puoi spiegarmi per favore di "d"? ** GetValue (d, null) ** –

+0

Siamo spiacenti, editato. è l'oggetto. – Ppp

+1

Grazie per la rapida risposta. Apprezzo molto e sta funzionando. –

Problemi correlati