Bạn có thể thêm một thuộc tính cho một đối tượng năng động như thế này:
dynamic myExpando = new ExpandoObject();
myExpando.SomeProp = "string";
TypeDescriptor.AddAttributes(myExpando, new SerializableAttribute());
Để đọc các thuộc tính bạn nên sử dụng này:
dynamic values = TypeDescriptor.GetAttributes(myExpando);
for (int i = 0; i < values.Count; i++)
{
System.Console.WriteLine(values[i]);
}
Tôi không chắc chắn bạn có thể đọc tùy chỉnh các thuộc tính như thế . Tuy nhiên, bạn cũng có thể thử phản ánh:
System.Reflection.MemberInfo info = myExpando.GetType();
object[] attributes = info.GetCustomAttributes(true);
for (int i = 0; i < attributes.Length; i++)
{
System.Console.WriteLine(attributes[i]);
}
Tuy nhiên, với phản ánh bạn không thể thấy thuộc tính mà bạn đã thêm vì thuộc tính là siêu dữ liệu tĩnh.
LoạiDescriptor là công cụ siêu dữ liệu do .NET FCL cung cấp. Bạn có thể đọc bài viết tại đây:
http://blogs.msdn.com/b/parthopdas/archive/2006/01/03/509103.aspx
Nguồn
2013-12-11 22:13:01
tại sao bạn không chạy mã đó và xem? –
Bạn đã kiểm tra 'TypeDescriptor' chưa? http://msdn.microsoft.com/en-us/library/system.componentmodel.typedescriptor%28v=vs.110%29.aspx – Matthew
@SamIam: Tôi không nghĩ anh ấy hy vọng nó hoạt động, nhưng phải rõ ràng , không. Nó không hoạt động. Kết quả là: 'RuntimeBinderException: 'System.Dynamic.ExpandoObject' không chứa định nghĩa cho 'AddAttribute'' – recursive