我想问一下在使用 PropertyAttribute.HasDefault
方法定义属性的上下文中 System.Reflection.Emit.TypeBuilder.DefineProperty
枚举值的目的是什么?什么时候应该使用 PropertyAttributes.HasDefault
,什么时候应该使用 PropertyAttributes.None
,它有什么变化?
据我所知,它与 PropertyBuilder 的 SetConstant 方法有关,但就我能够测试的而言,它并没有真正改变属性的默认值,那么 SetConstant 到底做了什么?
(我无意更改属性的默认值 - 只是想了解这些东西的作用)
最佳答案
SetConstant
是 TypeBuilder.SetConstantValue()
的包装器,用于将编译时常量与某些 IL 元数据、最常见的参数(具有默认值)和 const
字段相关联。
它对属性的用处似乎相当可疑。它不会影响属性的 get
访问器实际返回的值。通过 SetConstant()
设置的默认值似乎只能在元数据中或通过反射进行检查。如果您想允许某人仅使用反射或 IL 分析来确定属性返回的默认值,这可能很有用,但由于 get
访问器不需要实际返回该值,因此,应该考虑一下盐。
关于c# - PropertyAttributes.HasDefault 和 PropertyBuilder.SetConstant 的含义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21837365/