Можно ли указать отдельные модификаторы доступа для методов доступа get и set свойства? - PullRequest
8 голосов
/ 20 января 2011

Можем ли мы указать модификаторы доступа для get и set аксессоров свойства в C # /. NET?

Если это так, какой наилучший подход для реализации этого?

Ответы [ 3 ]

15 голосов
/ 20 января 2011

Да, это возможно.Он называется Asymmetric Accessor Accessibility, и вы можете прочитать документацию MSDN для него на этой странице .Код будет выглядеть примерно так:

public int Age
{
    get
    {
        return _age;
    }
    protected set
    {
        _age = value;
    }
}

Однако следует учитывать несколько важных предостережений:

  • Может быть изменен только один метод доступа.
  • Любые ограничения, налагаемые на отдельный метод доступа, должны быть больше ограничивающими, чем уровень доступности самого свойства, не менее.
  • Нельзя использовать модификаторы метода доступа на интерфейсе или в явной реализациичлена интерфейса.
3 голосов
/ 20 января 2011

Да, вы можете ...

public class Example
{
    public string Property
    {
        get;
        private set;
    }

    public string Property2
    {
        get;
        protected set;
    }
}

и т.д.

1 голос
/ 20 января 2011

http://msdn.microsoft.com/en-us/library/ms173121.aspx показывает возможные модификаторы. Если вы хотите иметь разные модификаторы, напишите:

[Modifier] [DataType] ProperyName{
    [Modifier] get{}
    [Modifier] set{}
}

Однако, если вы объявляете внутренние модификаторы, они должны быть меньше или равны видимым, чем внешние.

...