【发布时间】:2016-12-04 13:54:03
【问题描述】:
我有一个基实体类,它由两个类派生,分别名为 Student 和 Department。
public abstract class Entity
{
[Key]
public string Id { get; set; }
[Required]
public DateTime Created { get; set; }
[Required]
public string CreatedBy { get; set; }
[Required]
public DateTime Modified { get; set; }
[Required]
public string ModifiedBy { get; set; }
}
public class Department : Entity
{
[Required]
[Index]
[StringLength(128)]
public string Name { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
public class Student : Entity
{
[Required]
[Index]
[StringLength(128)]
public string Name { get; set; }
public string Phone { get; set; }
[Required]
public string DepartmentId { get; set; }
[ForeignKey("DepartmentId")]
public virtual Department Department { get; set; }
}
现在我想实例化派生类,但不想重复常见的初始化代码。我使用了 ref out 等方式,但它出现了构建错误。
public Student CreateStudent()
{
Student student = new Student
{
Name = nameTextBox.Text,
Phone = phoneTextBox.Text,
DepartmentId = departmentComboBox.SelectedValue.ToString()
};
SetCommonValues(ref student);
return student;
}
public Department CreateDepartment()
{
Department department=new Department()
{
Name = nameTextBox.Text
};
SetCommonValues(ref department);
return department;
}
public void SetCommonValues(ref Entity entity)
{
entity.Id = Guid.NewGuid().ToString();
entity.Created = DateTime.Now;
entity.Modified = DateTime.Now;
entity.CreatedBy = Constants.UserName;
entity.ModifiedBy = Constants.UserName;
}
任何建议都将受到高度赞赏。
【问题讨论】:
-
抽象类中的构造函数来完成SetCommonValues的工作?
-
您能否提供有关如何调用代码的更多详细信息以及有关错误的详细信息?
标签: c# inheritance reference polymorphism