Что лучший способ состоит в том, чтобы реализовать свойство, которое только для чтения общественности, но перезаписываемо наследникам?

Проблема в том, что Reservation.fk_guest и Rervation.fk_room являются внешними ключами, когда они должны быть ManyToManyField. Это должно помочь вам в развитии.

class Reservation(models.Model):
    guests = models.ManyToManyField(Guest, on_delete=models.CASCADE)
    rooms = models.ManyToManyField(Room, on_delete=models.CASCADE)
10
задан Jon B 20 October 2008 в 21:04
поделиться

3 ответа

private object m_myProp;
public object MyProp
{
    get { return m_myProp; }
    protected set { m_myProp = value; }
}

Или в C# 3.0

public object MyProp {get; protected set;}
36
ответ дан 3 December 2019 в 13:47
поделиться

Это - определенно способ пойти.

public object MyProp {get; protected set;}

Если Вы находитесь на более старой версии C# затем, это - способ пойти.

private object _myProp;
public object MyProp
{
    get { return _myProp; }
    protected set { _myProp = value; }
}
5
ответ дан 3 December 2019 в 13:47
поделиться

Наличие метода set и метода считывания не действительно немного лучше, чем наличие переменной на том уровне видимости.

Поэтому Вы могли просто сделать саму переменную защищенной и общественность читателя.

Тем не менее методы set и методы считывания являются индикатором плохого OO - действительно ли Вы уверены, что Вам нужны они? Необходимо спрашивать объект сделать что-то с его участниками, не прося у этого его участников, затем управляющих ими вне объекта.

Это - очень общее правило и существует много исключений.

0
ответ дан 3 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: