【发布时间】:2019-06-07 09:55:09
【问题描述】:
我试图在一个类的基础上创建一个新类,并且我想覆盖基类中的一个属性以删除 [必需]。但它没有覆盖,而是创建了一个同名的新属性。那么有什么问题,以及如何解决它。
namespace admin.models
{
public class BaseClass
{
[Required]
public string id { get; set; }
[Required]
public string name { get; set; }
}
public class NewClass : BaseClass
{
public new string name { get; set; }
}
}
【问题讨论】:
-
您需要在基类中声明属性
virtual或abstract,在派生类中声明override。基数:public virtual string id { get; set; },派生数:public override string id { get; set; } -
在这种情况下,我会使用
abstract -
在您的方法中添加行
var s = newClass.name;并查看分配给s的值。你做的很好。 -
@Archer 但如果他这样做了
Baseclass b = newClass; var s = b.name;,他将获得基类版本。 -
我强烈建议不要在这里使用继承。
标签: c# asp.net-mvc