Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Buddy类到底是什么?如何使用它向现有类添加注释?_C#_.net_Data Annotations_Buddy Class - Fatal编程技术网

C# 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类,以便将其标识为一个。至于原

我见过术语Buddy类被用作“回答”问题,比如如何向另一个文件中的部分类添加注释,但这些回答假设我知道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]的存在有点奇怪。同样,您可以用这种方法两次定义相同的属性,但不使用两个同名的分部类,这似乎是“正确”的方法。没有问题。确保标记答案,以便其他人也能找到问题和答案: