C# 如何编写一个属性来设置自动属性的默认值

C# 如何编写一个属性来设置自动属性的默认值,c#,default-value,custom-attributes,C#,Default Value,Custom Attributes,我已经阅读了通过属性设置默认属性的文章,该属性以DefaultValue结尾,用于设计模式或序列化 但是,有没有一种方法可以编写一个属性来满足这些帖子的要求:将属性默认为某个值 如果有一种方法——人们将如何开始编写这样一个属性 谢谢, 基本上,你不能 不过,您可以在构造函数中设置默认值 碰巧,我最近确实实现了一些这样做的东西,但那是使用基于工厂的构建;工厂检查[DefaultValue]并通过反射设置值。但是属性不能导致任意代码执行,除非您使用PostSharp这样的重写器 如果构造器离您太远,

我已经阅读了通过属性设置默认属性的文章,该属性以DefaultValue结尾,用于设计模式或序列化

但是,有没有一种方法可以编写一个属性来满足这些帖子的要求:将属性默认为某个值

如果有一种方法——人们将如何开始编写这样一个属性

谢谢, 基本上,你不能

不过,您可以在构造函数中设置默认值

碰巧,我最近确实实现了一些这样做的东西,但那是使用基于工厂的构建;工厂检查
[DefaultValue]
并通过反射设置值。但是属性不能导致任意代码执行,除非您使用PostSharp这样的重写器

如果构造器离您太远,您将不得不使用字段初始值设定项,并针对字段编写
get
/
set

基本上不能

不过,您可以在构造函数中设置默认值

碰巧,我最近确实实现了一些这样做的东西,但那是使用基于工厂的构建;工厂检查
[DefaultValue]
并通过反射设置值。但是属性不能导致任意代码执行,除非您使用PostSharp这样的重写器


如果构造函数离您太远,您将不得不使用字段初始值设定项,并针对字段编写
get
/
set

不幸的是属性只是元数据,这意味着它们不能单独运行或执行某些操作。
但是,没有什么可以阻止您编写一个名为
SetDefaultValues
的扩展方法,该方法从属性中读取默认值并将其分配给属性

我在最近的一个项目中做了类似的事情,这被证明是一个好的决定,因为它将声明式样式中定义的所有默认值都保存在一个地方


有一种方法可以窥视基于
[DefaultValue]
的初始化的不同实现策略,并比较它们的性能。我建议您检查一下。

不幸的是,属性只是元数据,这意味着它们不能自己运行或做一些事情。
但是,没有什么可以阻止您编写一个名为
SetDefaultValues
的扩展方法,该方法从属性中读取默认值并将其分配给属性

我在最近的一个项目中做了类似的事情,这被证明是一个好的决定,因为它将声明式样式中定义的所有默认值都保存在一个地方

有一种方法可以窥视基于
[DefaultValue]
的初始化的不同实现策略,并比较它们的性能。我建议你去看看