You can add an attribute to a dynamic object like this:
dynamic myExpando = new ExpandoObject();
myExpando.SomeProp = "string";
TypeDescriptor.AddAttributes(myExpando, new SerializableAttribute());
To read the attributes you should use this:
dynamic values = TypeDescriptor.GetAttributes(myExpando);
for (int i = 0; i < values.Count; i++)
{
System.Console.WriteLine(values[i]);
}
I am not sure you can read custom attributes like that. However you can also try reflection:
System.Reflection.MemberInfo info = myExpando.GetType();
object[] attributes = info.GetCustomAttributes(true);
for (int i = 0; i < attributes.Length; i++)
{
System.Console.WriteLine(attributes[i]);
}
However, with reflection you cannot see the attribute that you have been added because attributes are static metadata.
TypeDescriptor is a metadata engine provided by the .NET FCL. You can read the article here:
http://blogs.msdn.com/b/parthopdas/archive/2006/01/03/509103.aspx
TypeDescriptor
? msdn.microsoft.com/en-us/library/… – ScoppRuntimeBinderException: 'System.Dynamic.ExpandoObject' does not contain a definition for 'AddAttribute'
– Estrada