- .NET Framework提供了两种方法来访问类型上的元数据:命名空间中System.Reflection提供的反射 API 和TypeDescriptor类。 反射是适用于所有类型的通用机制,因为它的基础是在根Object类的方法中建立的GetType。 它为类型返回的信息不可扩展,因为它无法在目标类型的编译后对其进行修改。
- 中望CAD的自定义实体,在正常的获取属性用反射的方法是获取不了了,中望也没有给出说明,折腾了一天,终于重网上看到可以用这种方法获取得了。
DBObject brf =(DBObject)trans.GetObject(entId, OpenMode.ForRead);
object obj= brf.ZcadObject;
foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(obj))
{
string name = descriptor.Name;
object val = descriptor.GetValue(obj);
Console.WriteLine("name:{0}=value:{1}", name, val);
}
- 具体说明看微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/api/system.componentmodel.typedescriptor?view=net-6.0