namespace Common.Builders; using Domain.Entities; /// /// Builder pattern for creating Professor test objects. /// public class ProfessorBuilder { private int _id = 1; private string _name = "Prof. Smith"; private readonly List _subjects = []; public ProfessorBuilder WithId(int id) { _id = id; return this; } public ProfessorBuilder WithName(string name) { _name = name; return this; } public ProfessorBuilder WithSubject(Subject subject) { _subjects.Add(subject); return this; } public Professor Build() { var professor = new Professor(_name); SetProperty(professor, "Id", _id); // Access private _subjects field to add test subjects var subjectsList = (List)typeof(Professor) .GetField("_subjects", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)! .GetValue(professor)!; foreach (var subject in _subjects) subjectsList.Add(subject); return professor; } private static void SetProperty(T obj, string propertyName, object value) where T : class => typeof(T).GetProperty(propertyName)!.SetValue(obj, value); }