2013-12-11 14 views
7

Dinamik nesne/expando nesnesi çalışma zamanının özelliklerine bir özellik eklemek istiyorum, bu mümkün mü?Dinamik nesne yürütme özelliğinin özelliklerine özellik eklenmesi mümkün mü?

Ne yapmak istiyorum geçerli:

dynamic myExpando = new ExpandoObject(); 
myExpando.SomeProp = "string"; 
myExpando.AddAttribute("SomeProp", new MyAttribute()); 

o ya da bu şekilde yapmak mümkün mü?

Böyle bir dinamik nesneye bir özelliğini ekleyebilirsiniz
+0

: Burada makaleyi okuyabilirsiniz? –

+0

'TypeDescriptor' 'seçeneğini işaretlediniz mi? http://msdn.microsoft.com/en-us/library/system.componentmodel.typedescriptor%28v=vs.110%29.aspx – Matthew

+0

@SamIam: Çalışmasını beklediğini sanmıyorum, ama açık olmak gerekirse , yok hayır. İşe yaramıyor. Sonuç şudur: 'RuntimeBinderException:' System.Dynamic.ExpandoObject '' AddAttribute '' – recursive

cevap

0

:

dynamic values = TypeDescriptor.GetAttributes(myExpando); 
      for (int i = 0; i < values.Count; i++) 
      { 
       System.Console.WriteLine(values[i]); 
      } 

Ben özel böyle niteliklerini okuyabilir emin değilim:

dynamic myExpando = new ExpandoObject(); 
      myExpando.SomeProp = "string"; 
      TypeDescriptor.AddAttributes(myExpando, new SerializableAttribute()); 

bunu kullanmalısınız özelliklerini okumak için . Ancak aynı zamanda yansıma deneyebilirsiniz:

System.Reflection.MemberInfo info = myExpando.GetType(); 
      object[] attributes = info.GetCustomAttributes(true); 
      for (int i = 0; i < attributes.Length; i++) 
      { 
       System.Console.WriteLine(attributes[i]); 
      } 

Ancak yansıma ile size nitelikleri statik meta vardır çünkü eklenmiştir niteliğini göremez.

TypeDescriptor, .NET FCL tarafından sağlanan bir meta veri altyapısıdır. O kod çalıştırmasına ve görmüyorum neden

http://blogs.msdn.com/b/parthopdas/archive/2006/01/03/509103.aspx

+4

Ancak bu özellik özelliği değil, özellik ekleyerek. –

İlgili konular