我想问一下使用PropertyAttribute.HasDefault
方法定义属性的上下文中System.Reflection.Emit.TypeBuilder.DefineProperty
枚举值的目的是什么?当一个人应该使用PropertyAttributes.HasDefault
和PropertyAttributes.None
时,它会改变什么?
据我所知,它与PropertyBuilder的SetConstant方法有关,但它并没有真正改变属性的默认值,因为我能够测试,那么SetConstant究竟做了什么?
(我不打算改变属性的默认值 - 只是想了解这些事情的作用)
答案 0 :(得分:2)
SetConstant
是TypeBuilder.SetConstantValue()
的包装器,用于将编译时常量与某些IL元数据相关联,最常见的是参数(使用默认值)和const
字段。
它对物业的用处似乎相当可疑;它不会影响属性的get
访问者实际返回的值。通过SetConstant()
设置的默认值似乎只能在元数据中或通过反射进行检查。如果您希望允许某人仅使用反射或IL分析来确定属性返回的默认值,可能会很有用,但由于get
访问器不需要实际返回该值,因此应该采用它带着一粒盐。