我是C#& amp;的初学者EF。在设计我的新样本应用程序时,我有一个愚蠢的疑问。摘要可以继承另一个抽象类
using System;
using System.ComponentModel.DataAnnotations;
namespace Spark.BusinessObjects.Common
{
public abstract class BOBase
{
public virtual int UpdatedBy { get; set; }
[DataType(DataType.DateTime)]
public virtual DateTime UpdatedOn { get; set; }
}
public abstract class MasterBOBase : BOBase
{
public virtual int CreatedBy { get; set; }
[DataType(DataType.DateTime)]
public virtual DateTime CreatedOn { get; set; }
}
}
namespace Spark.BusinessObjects.UserManagement
{
using System;
using System.Data.Linq.Mapping;
using System.ComponentModel.DataAnnotations;
using Spark.BusinessObjects.Common;
[Table(Name = "tblUser")]
public class User:BOBase
{
[Key]
public virtual int UserID { get; set; }
[StringLength(maximumLength:40,MinimumLength=10)]
[DataType(DataType.EmailAddress)]
public virtual string EMailID { get; set; }
[StringLength(maximumLength: 20, MinimumLength = 6)]
[DataType(DataType.Password)]
public virtual string Password { get; set; }
[StringLength(maximumLength: 20, MinimumLength = 3)]
public virtual string FirstName { get; set; }
[StringLength(maximumLength: 20, MinimumLength = 1)]
public virtual string LastName { get; set; }
[DataType(DataType.Date)]
public virtual DateTime DOB { get; set; }
}
public class UserRole:MasterBOBase
{
[Key]
public virtual int UserID { get; set; }
public virtual int UserRoleName { get; set; }
}
}
我不需要CreatedBy&我的主表格中的CreatedOn属性。我可以像上面一样使用。是 它是否正确?
答案 0 :(得分:11)
当然,抽象类可以从另一个类继承!!
一个类无法从另一个类继承的唯一时间是您希望继承的类是sealed或仅具有私有构造函数。
答案 1 :(得分:3)
是的,您可以从另一个抽象类继承抽象类。
您可以在下面找到一个示例:
public abstract class BaseClass1
{
public abstract string Method();
}
public abstract class BaseClass2 : BaseClass1
{
}
public class UserClass : BaseClass2
{
string name;
public override string Method()
{
return name;
}
}
如果你想在BaseClass2中使用方法Method()
,你也可以从BaseClass1覆盖方法
在BaseClass2中,您可以将public override abstract string Method();
放入其中,但无论有没有,预期的操作都是相同的。
答案 2 :(得分:1)
当然,Abstract类可以从非抽象类和其他抽象类继承。 当您希望任何类继承自另一个类时,您需要注意(大多数情况下)密封修饰符。
答案 3 :(得分:0)
根据C#中的继承概念,Abstract类只能从一个类继承,它既可以是Abstract类,也可以是Concrete类,但它可以从多个接口继承。
但是,你不能从密封的类继承。