Role customerRole = new Role("Customer"); Role employeeRole = new Role("Employee"); Role helperRole = new Role("Helper"); var joe = new Person { Role = customerRole, FirstName = "Joe", LastName = "Black" }; var john = new Person { Role = employeeRole, FirstName = "John", LastName = "Doe" }; var jack = new Person { Role = helperRole, FirstName = "Jack" }; IncreaseSalary(john); Console.WriteLine(); IncreaseSalary(joe); void IncreaseSalary(Person person) { if (person.Role != employeeRole && person.Role != helperRole) { throw new ArgumentException("Only Employee or Helper roles are supported.", nameof(person)); } Console.WriteLine($"IncreaseSalary: increasing for {person} ..."); } record Role(string name); record Person { public required Role Role { get; init; } public string? FirstName { get; set; } public string? LastName { get; set; } }