2015-08-27 18 views
5

Aşağıdaki nesne vardır: I bileşimleri özelliği isimleri yineleme mümkün olması gerekmektedirDinamik nesnenin özelliklerini almak için FastMember'i nasıl kullanabilirim?

dynamic person = new {Id = 1, Name = "SpiderMan"}; 

"Id", "Name".

Ayrıca bunu en verimli şekilde yapabilmem gerekir, bu yüzden FastMember'u kullanmayı seçtim, ancak api özellikleri boyunca yineleme yapmama izin vermiyor.

Herhangi bir fikrin var mı?

kullandığımı istediğini elde başardı [GÜNCELLEME] Marc'a

Teşekkür:

dynamic person = new { Id = 1, Name = "SpiderMan" }; 
MemberSet members = TypeAccessor.Create(person.GetType()).GetMembers(); 
foreach (Member item in members) 
{ 
    // do whatever 
} 

cevap

6

göstermek senaryo, o tip ince olduğundan TypeAccessor.Create(obj.GetType()) ve GetMember(), sorunsuz çalışır İçin yansıma için.

Daha genel bir durum söz konusu: bu adil bir soru - FastMember'in bunu gerçek dinamik tipler için gösterip göstermediğini gerçekten hatırlamıyorum, ancak burada önemli bir nokta, dinamik nesnelerin doğası gereği, özellik kümesinin Hatta numaralandırılabilir bile olmayabilir - yani kod,'a anında yanıt vermeden, Whatever önceden bilmeden. Bununla birlikte, aslında sahip olduğunuz nesne için, basit yansıma en iyi bahistir. Gösterdiğiniz senaryo, dynamic'a ihtiyaç duymaz.

+1

Tnx Marc, 'GetMembers()' benim senaryo için harika çalışıyor. Kaynak kodun GoogleCode'dan GitHub'a taşınması için herhangi bir plan var mı? Bu parlak kütüphane için bir kez daha tnx. – MaYaN

İlgili konular