Видимость свойства в абстрактном классе - PullRequest
3 голосов
/ 27 января 2010

Знает ли кто-нибудь из лучших рекомендаций C # о способах определения видимости атрибута (частного или защищенного) за публичным свойством в абстрактном или родительском классе.

В других мирах, что является лучшей практикой по умолчанию (и почему) между:

public abstract class MyClass
{
    private string myAttribute;

    public string MyAttribute
    {
        get { return myAttribute; }
        set { myAttribute = value; }
    }
}

и

public abstract class MyClass
{
    protected string myAttribute;

    public string MyAttribute
    {
        get { return myAttribute; }
        set { myAttribute = value; }
    }
}

Я думаю, что у класса детей должен быть способ напрямую обрабатывать этот защищенный атрибут, но это может не быть хорошей практикой, если метод получения или установки содержит больше кода ...

Что вы думаете об этом?

Спасибо.

Ответы [ 4 ]

8 голосов
/ 27 января 2010

Неконстантные поля должны быть всегда всегда приватными. Если вам нужно использовать поле, потому что по какой-то причине вы не можете использовать авто-свойства, убедитесь, что оно закрытое. Детские классы должны получать к нему доступ через публичные или защищенные свойства.

2 голосов
/ 27 января 2010

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

  1. Подклассы должны переопределять или иметь доступ к
  2. Внешние классы не должны иметь доступа к

В этом случае вы уже предоставили внешним классам доступ к значению. Обеспечение его защиты не дает подклассу никакого реального преимущества.

2 голосов
/ 27 января 2010

Определенно личное. Однако есть более простой способ сделать то, что вы делаете:

public abstract class MyClass
{
    public string MyAttribute { get; set; }
}

Это делает то же самое, но гораздо проще в обслуживании.

0 голосов
/ 28 января 2010

Я нашел одно ограничение для публичного доступа, защищенный набор: комментарии. Потому что комментарии не должны быть одинаковыми для публичных и защищенных, уважая stylecop: - Комментарий для публики: получает комментарий - Комментарий для защищенного: получает или устанавливает комментарий

Я не хочу делать 2 свойства для обоих видимости, поэтому я решил это быстро с помощью следующего комментария: Получает не заданный (защищенный) комментарий.

Если у вас есть лучшая практика, это приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...