C# Buddy类到底是什么?如何使用它向现有类添加注释?
我见过术语Buddy类被用作“回答”问题,比如如何向另一个文件中的部分类添加注释,但这些回答假设我知道Buddy类是什么,代码示例假设我理解这是如何/为什么工作的C# Buddy类到底是什么?如何使用它向现有类添加注释?,c#,.net,data-annotations,buddy-class,C#,.net,Data Annotations,Buddy Class,我见过术语Buddy类被用作“回答”问题,比如如何向另一个文件中的部分类添加注释,但这些回答假设我知道Buddy类是什么,代码示例假设我理解这是如何/为什么工作的 我看不到C中buddy类的简单解释,以及它如何/为什么允许我修改现有类,例如向属性添加注释。'buddy class'不一定是C专有的,但我相信它在.Net中更常见,它是一种模式,或者说技术黑客,用于扩展自动生成的类并向其添加属性。 它们有时也称为关联类或元数据类。命名约定是将元数据的MD附加到buddy类,以便将其标识为一个。至于原
我看不到C中buddy类的简单解释,以及它如何/为什么允许我修改现有类,例如向属性添加注释。'buddy class'不一定是C专有的,但我相信它在.Net中更常见,它是一种模式,或者说技术黑客,用于扩展自动生成的类并向其添加属性。 它们有时也称为关联类或元数据类。命名约定是将元数据的MD附加到buddy类,以便将其标识为一个。至于原因,自动生成的代码将覆盖您所做的任何更改。关联类可能是避免这种情况的一种方法,您可以保留自定义元数据,例如验证属性。 有一个类是自动生成的,很容易标记为partial,我相信这就是为什么引入partial修饰符的原因——扩展自动生成的类。 您希望应用一个属性,以便创建一个包含该属性的单独类,并将其与另一个类配对 如果VS为您的一个实体生成此项:
public partial class AutoGeneratedClass
{
public string SomeData { get; set; }
}
如果要扩展该功能并添加自定义元数据,可以创建以下内容:
[MetadataType(typeof(NotAutoGeneratedClassMD))]
public partial class AutoGeneratedClass
{
}
public class NotAutoGeneratedClassMD
{
[DisplayName("This is some data")]
public string SomeData { get; set; }
}
简短版本:
什么:关联类以扩展自动生成的类和自定义元数据的方法
原因:避免在再次生成时覆盖对自动生成类的更改
就我个人而言,我不是一个粉丝,但这是另一个故事:'Buddy class'不一定是特定于C的,但我相信它在.Net中更常见,它是一种模式,或技术黑客,用于扩展自动生成的类并向其添加属性。 它们有时也称为关联类或元数据类。命名约定是将元数据的MD附加到buddy类,以便将其标识为一个。至于原因,自动生成的代码将覆盖您所做的任何更改。关联类可能是避免这种情况的一种方法,您可以保留自定义元数据,例如验证属性。 有一个类是自动生成的,很容易标记为partial,我相信这就是为什么引入partial修饰符的原因——扩展自动生成的类。 您希望应用一个属性,以便创建一个包含该属性的单独类,并将其与另一个类配对 如果VS为您的一个实体生成此项:
public partial class AutoGeneratedClass
{
public string SomeData { get; set; }
}
如果要扩展该功能并添加自定义元数据,可以创建以下内容:
[MetadataType(typeof(NotAutoGeneratedClassMD))]
public partial class AutoGeneratedClass
{
}
public class NotAutoGeneratedClassMD
{
[DisplayName("This is some data")]
public string SomeData { get; set; }
}
简短版本:
什么:关联类以扩展自动生成的类和自定义元数据的方法
原因:避免在再次生成时覆盖对自动生成类的更改
就我个人而言,我不是一个粉丝,但这是另一个故事:假设我知道buddy类是什么是不清楚的?这个问题没有解释发生了什么,它只是问人们为什么这样做。你不能在两个部分类中定义同一属性两次@MatíasFidemraizerI同意OP的观点,即他提出的问题与被证明的答案不同。我想这正是他想要的。我重新打开了它,让我们看看OP是否能获得更多关于这个主题的信息,而这些信息在类似的问答中还没有出现。假设我知道什么是好友类是不清楚的?这个问题无法解释发生了什么,它只是问人们为什么这样做。你不能在两个部分类中定义同一属性两次@MatíasFidemraizerI同意OP的观点,即他提出的问题与被证明的答案不同。我想这正是他想要的。我重新打开了它,让我们看看OP是否能获得更多关于这个主题的信息,而这些信息在类似的问答中还没有。谢谢,这在某种程度上澄清了一点,尽管[MetadataType]的存在有点奇怪。同样,您可以用这种方法两次定义相同的属性,但不使用两个同名的分部类,这似乎是“正确”的方法。没有问题。确保标记答案,以便其他人也能找到问题和答案:谢谢,这在一定程度上澄清了[MetadataType]的存在有点奇怪。同样,您可以用这种方法两次定义相同的属性,但不使用两个同名的分部类,这似乎是“正确”的方法。没有问题。确保标记答案,以便其他人也能找到问题和答案: