向派生类型添加属性
本文关键字:属性 添加 类型 派生 | 更新日期: 2023-09-27 18:13:00
我正在使用实体框架。我有一个由EF生成的名为Company的部分类。部分类看起来像:
类型'BaseModels。"Company"已经包含了"CompanyName"的定义"
public partial class Company {
public string CompanyId { get; set; }
public string CompanyName { get; set; }
}
我想做的是从Company创建一个派生类,它有一个额外的属性。
public class MyCompany : Company {
public string UploadName { get; set; }
}
但是我想用一个自定义属性来修饰基本类型属性CompanyName。
我去了以下位置:如何从子类向基类的字段添加属性?
这确实回答了我的问题。问题是,如果我在基类中将CompanyName属性标记为"virtual",那么EF可以重新生成覆盖我的东西的代码。
我尝试定义一个局部类,但VS 2013抱怨当我试图添加:
public partial class Company {
[Renderer("html")]
public virtual string CompanyName { get; set; }
}
属性名称已经存在。
我该如何绕过这个障碍?
不能使用部分类定义已经存在的属性。在现有属性上添加属性,需要使用MetadataTypeAttribute。创建分部类:
[MetadataType(typeof(CompanyMetadata))]
public partial class Company { }
并使用带有所需属性的属性向项目添加元数据类:
public class CompanyMetadata
{
[Renderer("html")]
public string CompanyName { get; set; }
}
使Company成为一个抽象类。然后使用带有CompanyName的override关键字来添加自定义属性。您也可以添加UploadName