Установщики свойств являются полноценными методами, и вы можете выполнять любой код, который вам нравится в них. Например,
private string myProperty;
private HashSet<string> validValues;
public string MyProperty
{
get { return myProperty; }
set
{
if(!validValues.Contains(value)) throw new ArgumentException();
myProperty = value;
}
}
Это, очевидно, простой (и неполный) пример, но он должен продемонстрировать, что вам нужно сделать: в вашем установщике как-то проверить, что предоставленное значение (доступное в параметре value
, которое неявно) является допустимым. Если это не так, сгенерируйте исключение (ArgumentException
- это пример, используемый здесь, и это нормально, или не стесняйтесь сгенерировать более конкретное или значимое исключение). Если это так, установите значение.
Редактировать после вопроса Редактировать
Единственная реальная проблема с вашим кодом заключается в том, что вы пытаетесь наследовать от string
, что недопустимо, хотя не совсем понятно, почему вам нужен для наследования от строки. Сделайте так, чтобы ваше свойство использовало MyValue
в качестве типа, свяжите cboValues
с вашим списком, затем используйте (MyValue)cboValues.SelectedItem
вместо SelectedValue
для установки вашего свойства.