Почему бы не использовать перечисление?
[Flags]
public enum PersonState
{
None = 0,
Archived = 1,
Deleted = 2,
Both = Archived | Deleted
}
class Person
{
private PersonState status;
public PersonState Status
{
get { return this.status; }
set { this.status = value; }
}
public bool IsArchived
{
get
{
return (this.status & PersonState.Archived) != 0;
}
set
{
if (value)
this.status |= PersonState.Archived;
else
this.status &= ~PersonState.Archived;
}
}
public bool IsDeleted
{
get
{
return (this.status & PersonState.Deleted) != 0;
}
set
{
if (value)
this.status |= PersonState.Deleted;
else
this.status &= ~PersonState.Deleted;
}
}
}
Вы можете напрямую привести значение перечисления к целому числу.
int x = (int)person.Status;
И вы можете сделать наоборот, если у вас естьint.
person.Status = (PersonState)integerValue;
Кроме того, если вы не предоставляете возможность того, что Удаленные и Архивные могут сосуществовать вместе, это на самом деле возможно с логическими значениями.Число возможных значений, закодированных n логическими значениями, равно 2 ^ n, поэтому, поскольку у вас есть 2 логических значения, у вас есть 4 возможных значения, 00, 01, 10 и 11.
Проблема в самой проблеме: неправильно кодировать эту информацию с помощью логических значений.Это должно быть перечисление только с 3 возможными значениями также в БД.