C# 如何编写一个属性来设置自动属性的默认值
我已经阅读了通过属性设置默认属性的文章,该属性以DefaultValue结尾,用于设计模式或序列化 但是,有没有一种方法可以编写一个属性来满足这些帖子的要求:将属性默认为某个值 如果有一种方法——人们将如何开始编写这样一个属性 谢谢, 基本上,你不能 不过,您可以在构造函数中设置默认值 碰巧,我最近确实实现了一些这样做的东西,但那是使用基于工厂的构建;工厂检查C# 如何编写一个属性来设置自动属性的默认值,c#,default-value,custom-attributes,C#,Default Value,Custom Attributes,我已经阅读了通过属性设置默认属性的文章,该属性以DefaultValue结尾,用于设计模式或序列化 但是,有没有一种方法可以编写一个属性来满足这些帖子的要求:将属性默认为某个值 如果有一种方法——人们将如何开始编写这样一个属性 谢谢, 基本上,你不能 不过,您可以在构造函数中设置默认值 碰巧,我最近确实实现了一些这样做的东西,但那是使用基于工厂的构建;工厂检查[DefaultValue]并通过反射设置值。但是属性不能导致任意代码执行,除非您使用PostSharp这样的重写器 如果构造器离您太远,
[DefaultValue]
并通过反射设置值。但是属性不能导致任意代码执行,除非您使用PostSharp这样的重写器
如果构造器离您太远,您将不得不使用字段初始值设定项,并针对字段编写get
/set
。基本上不能
不过,您可以在构造函数中设置默认值
碰巧,我最近确实实现了一些这样做的东西,但那是使用基于工厂的构建;工厂检查[DefaultValue]
并通过反射设置值。但是属性不能导致任意代码执行,除非您使用PostSharp这样的重写器
如果构造函数离您太远,您将不得不使用字段初始值设定项,并针对字段编写
get
/set
。不幸的是属性只是元数据,这意味着它们不能单独运行或执行某些操作。但是,没有什么可以阻止您编写一个名为
SetDefaultValues
的扩展方法,该方法从属性中读取默认值并将其分配给属性
我在最近的一个项目中做了类似的事情,这被证明是一个好的决定,因为它将声明式样式中定义的所有默认值都保存在一个地方
有一种方法可以窥视基于
[DefaultValue]
的初始化的不同实现策略,并比较它们的性能。我建议您检查一下。不幸的是,属性只是元数据,这意味着它们不能自己运行或做一些事情。但是,没有什么可以阻止您编写一个名为
SetDefaultValues
的扩展方法,该方法从属性中读取默认值并将其分配给属性
我在最近的一个项目中做了类似的事情,这被证明是一个好的决定,因为它将声明式样式中定义的所有默认值都保存在一个地方
有一种方法可以窥视基于[DefaultValue]
的初始化的不同实现策略,并比较它们的性能。我建议你去看看