Let's say an application has an `Employer` object has been created by a user and the program is prompting the user to enter in a property called `EmployerId`. In this example the application won't let the user enter in an invalid EmployeeId. I have mocked up the following solution to solve the problem.

```
public int EmployerId
        {
            get { return employerId; }
            set
            {

                EmployerId = SetEmployerId();
            }
        }

        public int SetEmployerId()
        {
            int id = 0;
            Console.Write("Enter employer ID: ");
            id = Convert.ToInt32(Console.ReadLine());
            while (id < 5 || id > 10) //silly logic for illustrative purposes
            {
                Console.Write("Invalid id, enter another id: ");
                id = Convert.ToInt32(Console.ReadLine());
            }
            return this.employerId = id;
        }

```

this keeps any heavy lifting out of the setter of the property and delegates that responsibility to the `SetEmployerId` method. 

Would this be an acceptable solution in a production setting? Is there any way this could be improved upon, or any pitfalls this might lead to later down the road when the application isn't such a contrived example? (besides the fact that the user isn't aware of what valid input is).