У меня есть базовый класс сущностей, который вызывается двумя классами, называемыми Student и Department.C# передать дочерний объект методу, который должен быть заполнен общими свойствами базового класса
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? –
Можете ли вы предоставить более подробную информацию о том, как вы вызываете свой код и какие особенности об ошибках? – Vinod