2016-03-22 23 views
3

Bir nesneyi dinamik türüne dönüştürmeye çalışıyorum ancak dönüştürme RunTimeBinder özel durumuyla başarısız oluyor. Stackoverflow cevaplarında karşılaştığım iki yöntemi kullanmayı denedim.Nesne Dinamik olarak Word'e dönüştürme #

Kod 1:

object objSum; 
dynamic dynSum; 
objSum = dataTableColumnChart.Compute(String.Format("Count({0})", strColumnName), ""); 
dynSum = Convert.ChangeType(objSum, objSum.GetType());\ 
Debug.Writeline(dynSum); 

Kod 2:

dynSum=objSum; 
Debug.Writeline(dynSum); 

atılan istisna şudur:

A first chance exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in Unknown Module. 

ayıklama ifadesi olduğunda istisnası atılır her iki durumda da lütfen unutmayın idam.

dynSum = objSum; 
+0

Aynı hatayı kod 2 ile aldığınızdan emin misiniz? Dinamik bir türe basit bir atamanın bir istisnaya neden olacağını düşünmüyorum. Tam hata mesajını verebilir misiniz? – PMF

+0

@PMF Merhaba, şimdi soruma detaylarını ekledim. – JKay

+0

, Debug.Writeline (dynSum.ToString()) ile atılan bir özel durumdur; – Eminem

cevap

2

istisnadır:

+0

Merhaba, şimdi çalışıyor. Teşekkürler! Bu yüzden, dönüşüm güzeldi ve sorun Debug, Writeline ile oldu. Açıklama için teşekkürler. – JKay

0

izlemeyi deneyin

Cannot dynamically invoke method 'Write' because it has a Conditional attribute 

Ve mümkün Debug.WriteLine girişleri kontrol ederken, "dinamik" bunlardan biri değil.

string strForWriteLine = dynSum.ToString() as string; 
    Debug.WriteLine(strForWriteLine); 

Umut bu

* Düzenleme yardımcı olur: Yani örneğin dizeye, döküm gerekir dize olarak Biraz detay yaklaşık dynSum.ToString(); Sadece ToString() öğesini kullandığınızda, dinamik bir dizge elde edersiniz.

var strForWriteLine = dynSum.ToString(); 

strForWriteLine tip İşte Dinamik

public static dynamic ToDynamic(this object value) 
    { 
     IDictionary<string, object> expando = new ExpandoObject(); 

     foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(value.GetType())) 
      expando.Add(property.Name, property.GetValue(value)); 

     return expando as ExpandoObject; 
    } 
+0

Merhaba, Ben zaten bunu denedim ve benim soruma değinmiştim. – JKay

11

olduğunu. Herkesi yumrukla, Serialize nesnesini dizeye, sonra dizgeyi dinamik olarak deserialize et.

string str = JsonConvert.SerializeObject(objectstring); 
dynamic obj = JsonConvert.DeserializeObject(str); 
0

Eğer JsonConvert kullanmalıdır bir nesneyi dönüştürmek için uzatma yöntemidir dinamik {dize}

İlgili konular