2010-08-05 12 views
8

Bir methodinfo'yu C# içinde geçirmenin en kolay yolu nedir?Traverse a C# yöntemi ve yöntem gövdesini düzenleyin

Yöntem gövdesini çaprazlamak ve alan referanslarını bulmak ve türlerini almak istiyorum.

System.Reflection bölümünde ise;

düşük seviyeli tür ve ben vücudu çapraz mümkün olacaktır önce "bazı" iş gerektirecektir
mi.GetMethodBody().GetILAsByteArray() 

.

Cecil'in var olduğunu biliyorum, ancak cecili bir bellek kurulumunda yükleme sorunu var. Çalıştığım derleme her zaman "diskte" değil, örn. Boo ve ben derleme geçici disk olmadan temiz bir çözüm diske geçici.

Bunun için başka hangi alternatifler var?

+0

Arayarak elde edilen bayt dizisi üzerinde çalışır Cecil ve bellek içi derlemeler ile ilgili sorun nedir? –

+0

@Tim: Bu http://markmail.org/message/yssmfgrsqnnnzrvt dosyasını buldum, biraz eski. AssemblyFactory'de mevcut bir derlemeyi yalnızca dosyadan, bayt [] veya Stream'den yüklemek için bir yöntem yoktur. Boo tarafından oluşturulan bir derlemeyi bayt [] olarak seri hale getirmeye çalıştım ancak "Type System.Reflection.Emit.AssemblyBuilder, Serializable olarak işaretlenmemiş." Belki de bir montajdan bir bayt [] alıp yanlış bir şey yapıyorum. – Marcus

cevap

7

Bu şeyin yardımı: Reflection based CIL reader. GetILAsByteArray()

+0

Teşekkürler, bunu yapmalı. Bir çözüm için bakıldığında bunu kaçırmış olmalı. – Marcus

+1

En azından sen sormadan önce googled. Sitede pek çok kişi gibi değil ;-) –

+0

Mono ekibindeki herkes bunu okuyorsa, çalışma zamanında bir hata veya bir şey var: https://bugzilla.novell.com/show_bug.cgi?id= 628660 – Marcus

İlgili konular