Мое первое желание - использовать Enums.Перечисления могут быть разных базовых типов, но по умолчанию используется Int.Вы можете явно установить значение int каждого элемента в Enum, что полезно для того, чтобы они соответствовали некоторому другому предопределенному списку (например, коды ошибок или в вашем случае: уникальные идентификаторы элементов в вашей БД).
Ваш код, который анализирует ваш набор данных и создает ваши объекты "Car", может просто привести эти идентификаторы строк базы данных в соответствующий Enum.
class Program
{
static void Main(string[] args)
{
Car myCar = new Car();
myCar.Brand = (CarBrand)1;
myCar.Model = (CarModel)10;
myCar.Type = (CarType)3;
Console.WriteLine("You drive a {0} {1} {2}. Niiiice.", myCar.Brand, myCar.Model, myCar.Type);
Console.ReadLine();
}
}
public class Car
{
public CarType Type {get; set;}
public CarBrand Brand {get; set;}
public CarModel Model {get; set;}
public decimal Price {get; set;}
}
public enum CarBrand
{
BMW = 1,
Audi = 2,
Ford = 5,
Volkswagen = 23
}
public enum CarModel
{
M3 = 10,
R8 = 211,
Mustang = 3,
Passat = 4
}
public enum CarType
{
Sedan = 3,
Coupe = 10,
Convertible = 21
}
Конечно, вы захотите выполнить некоторую проверку ошибок и т. Д. Один из недостатков Enums заключается в том, что вы находитесь в зависимости от требований к именованию полей C # и, возможно, style-cop, и поэтомуимеет смысл иметь свойство или служебный метод, который переходит к строковому ресурсу (например, RESX) и возвращает «FriendlyBrandName» или что-то в этом роде.