Как сказал cmsjr, вам нужно сделать следующее:
public class Employment
{
public Employment(EmploymentType employmentType)
{
this.EmploymentType = employmentType;
}
public EmploymentType EmploymentType { get; set; }
}
Это заставит абонентов передавать значение при создании следующим образом:
Employment e = new Employment(EmploymentType.FullTime);
В ситуации, когда вам нужен конструктор по умолчанию (например, сериализация), но вы все еще хотите применить правило, вам потребуется некоторая проверка состояния. Например, каждый раз, когда вы пытаетесь выполнить операцию с классом Employment, вы можете проверить его на наличие действительного состояния, такого как:
public EmploymentType? EmploymentType { get; set; } // Nullable Type
public void PerformAction()
{
if(this.Validate())
// Perform action
}
protected bool Validate()
{
if(!EmploymentType.HasValue)
throw new InvalidOperationException("EmploymentType must be set.");
}
Если вы ищите предупреждения о создании собственного компилятора, это не совсем возможно. Я задал похожий вопрос здесь Настраиваемые предупреждения компилятора