Вопрос по постройке класса
Есть например 4 класса TransportnoeSredstvo, Sobstvennik, FizLico, UyrLico
Вот как правильно построить класс Sobstvennik так:
Чтобы у #1 экземпляра TransportnoeSredstvo, Sobstvennik был FizLico.
А у #2 экземпляра TransportnoeSredstvo Sobstvennik был UyrLico
Просто делать у Sobstvennik 2 свойства FizLico и UyrLico, а затем одно из них использовать, а другое оставлять null ?
Или можно как то грамотнее ?
class Sobstvennik
{
public FizLico FizLico { get; set; }
public YurLico YurLico { get; set; }
}
Ответы (1 шт):
Как же тяжело читать транслитерацию.
Sobstvennik = VehicleOwner
TransportnoeSredstvo = Vehicle
FizLico = Individual
UyrLico = Organisation
Вас спасет второй принцип ООП - наследование.
К примеру, можно создать базовый класс Client
// abstract в частности дает понять, что экземпляры этого типа создавать не следует и запрещает это делать
public abstract class Client
{
public string Name { get; set; }
public long Inn { get; set; }
}
И унаследоваться от него.
public class Individual : Client
{
public string HomeAddress { get; set; }
}
public class Organisation : Client
{
public string OfficeAddress { get; set; }
}
Тогда код получится такой
public class VehicleOwner
{
public Client Client { get; set; }
public Vehicle Vehicle { get; set; }
}
А определить реальный тип клиента можно так
if (vehicleOwner.Client is Individual individual)
{
Console.WriteLine(individual.HomeAddress);
}
Либо так
switch (vehicleOwner.Client)
{
case Individual individual:
Console.WriteLine(individual.HomeAddress);
break;
}
Это просто как пример, быть может я не до конца понял, какая именно структура данных вам нужна, но основные приниципы наследования от этого не меняются.