C# 如何在分部类的另一半中定义的属性上使用属性?

C# 如何在分部类的另一半中定义的属性上使用属性?,c#,asp.net-mvc,attributes,partial-classes,C#,Asp.net Mvc,Attributes,Partial Classes,我有一个通过导入包含以下内容(缩写)的web服务而自动生成的类: 我想给这个成员添加一个MVC格式属性。因此,在另一个包含相同分部类定义的文件中,我想做如下操作(这是非法的): 分部方法在这里没有用处,因为分部方法必须是私有的、具有void返回类型、必须是方法等 如何装饰此成员?您可以使用如下属性: [MetadataType(typeof(MyClass_Validation))] public partial class MyClass {} public class MyCl

我有一个通过导入包含以下内容(缩写)的web服务而自动生成的类:

我想给这个成员添加一个MVC格式属性。因此,在另一个包含相同
分部类定义的文件中,我想做如下操作(这是非法的):

分部方法在这里没有用处,因为分部方法必须是私有的、具有void返回类型、必须是方法等


如何装饰此成员?

您可以使用如下属性:

[MetadataType(typeof(MyClass_Validation))]     
public partial class MyClass
{} 

public class MyClass_Validation     
{     
   [DisplayFormat(...)] 
   public DateTime StartDate { get; set; } 
}

第二个代码段是否应该定义第一个代码段中的
StartDate
属性所使用的
StartDateField
?与其使用分部类来修饰生成的代码,不如将
MetadataType
属性与另一个镜像生成的类一起使用。()@M.Babcock:不,第二个代码段与第一个代码段位于同名的分部类中。以这种方式向自动生成的类添加扩展是很常见的,但通常只添加属性/方法,而不重新定义它们(当然,不能)。正确。这就是我的第二条评论所针对的内容。检查一下,我已经在这里回答了这个问题。您的意思是说,在这里使用MetadataType会迫使编译器将类似签名的属性添加到分部类中相应的签名中吗?如果可以的话,听起来很棒。是的,使用
MetadataType
attribute定义一个类型,该类型将包含自动生成类的属性。以不同的方式指定验证属性也是一种很好的做法class@Abel-是的,这是专门为这种情况设计的。比赛是在名字上,而不是在签名上。就像一个符咒。谢谢@Henk的更新,我会小心过载的。尽管在TCPL中指定了一些特殊属性,但在TCPL中找不到这方面的任何内容。
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)] 
public DateTime StartDate;
[MetadataType(typeof(MyClass_Validation))]     
public partial class MyClass
{} 

public class MyClass_Validation     
{     
   [DisplayFormat(...)] 
   public DateTime StartDate { get; set; } 
}