У меня есть следующий случай:C# абстрактный базовый класс - расширение реализации
public class GeoLocation
{
public double Longitude { get; set; }
public double Latitude { get; set; }
public string LocationName { get; set; }
}
public abstract class Base
{
public abstract GeoLocation GeoLocation { get; set; }
}
public class Concrete : Base
{
public override GeoLocation GeoLocation
{
get;
set;
}
}
Теперь, если я создаю класс Concrete2
, который наследуется от Base
, а также и я хочу GeoLocation
объект, чтобы иметь больше 1 свойство:
public string Address{ get; set; }
Каков наилучший способ реализации этого?
я мог бы создать новый класс GeoLocationEx : GeoLocation
и поместить Address
недвижимость там, но тогда в моем объекте Concrete2, я бы 2 свойства: GeoLocation
и GeoLocationEx
, которые мне не нравятся ...
Я мог бы также сделать Класс GeoLocation неполный и расширить его с помощью свойства Address
для класса Concrete2
, но я не уверен, что это было бы «правильным» использованием частичных классов.
Что может быть лучшим способом для этого?
Заранее благодарим за вашу помощь!
Почему вы хотите класс потомок работать с расширенной 'GeoLocation' объекта? В этом случае, если вы хотите работать с объектами Concrete2 через интерфейс «Base», вам нужно будет проверить, является ли это «Concrete2» объектом, а не «Concrete», и только затем передается в объект «GeoLocationEx». –
Почему вы не можете просто добавить «Адрес» к объекту GeoLocation? –
Я нашел решение, смотрящее на это сообщение: abstract class Request где T: Параметры { T Параметры; } класс Специализированный: Запрос { } –