向实体类外部的属性添加数据批注
本文关键字:添加 数据 属性 实体 外部 | 更新日期: 2023-09-27 18:33:51
我需要向我的实体添加数据注释属性,但是,在我的实体之外。为什么?我所有的类都是由 T4 生成的,如果我向属性(显示名称、最小值、最大值等)添加一些数据注释,当我重新运行 T4 以生成我的实体时,它们将丢失。我希望实体由 T4 生成,然后在另一个类中执行以下操作:
Dog.Name.AddDataannotation(new DisplayNameDataAnnotation("My dog"));
该类将类似于
public class Dog
{
public int DogId { get; set; }
public string Name { get; set; }
}
它就像一个用于数据注释的流畅 API。通过这种方式,我将把我的数据注释与我的实体分开,我可以在不丢失它们的情况下重新生成它们。如果有人问我不能使用 DTO。另一件事,我有一个基于其数据注释验证实体的类,我希望它保持工作。
有可能做这样的事情吗?
谢谢,对不起我的英语!
MetadataTypeAttribute
旨在处理这种情况。它不漂亮,但应该可以工作。
要采取的步骤如下:
- 确保生成的类型
partial
- 对于要添加元数据的每个类型,添加新的分部类定义,指定
[MetadataType]
(例如[MetadataType(typeof(DogMetadata))]
] - 重新定义
DogMetadata
中的属性,在那里添加属性
完整示例:
//dog.generated.cs
partial class Dog
{
public int DogId { get; set; }
public string Name { get; set; }
}
//dog.cs
[MetadataType(typeof(DogMetadata))]
partial class Dog {}
class DogMetadata
{
[DisplayName("My dog")]
public string Name { get; set; }
}