Что такое внутреннее свойство set в C#?

Я только что натолкнулся на неизвестную для меня концепцию C#. Может кто-нибудь сказать мне, какова цель внутреннего набора свойств? Каково его использование? Я знаю, что внутреннее ключевое слово используется для работы в сборке.

7 ответов

Решение

Если у вас есть свойство с внутренним аксессором set (и public get accessor), это означает, что код в сборке может читать (получать) и записывать (устанавливать) свойство, но другой код может только читать его.

Вы можете получить вышеуказанную информацию, прочитав о модификаторе внутреннего доступа, модификаторе открытого доступа и свойствах.

Также вы можете прочитать об ограничении доступности Accessor.

Предположим, вы разрабатываете API для использования другими программистами. В этом API у вас есть объект Foo который имеет свойство Bar, Вы не хотите, чтобы другие программисты устанавливали значение Bar когда они ссылаются на вашу сборку, но вам нужно самим установить значение из своего API. Просто объявите свойство как таковое:

public class Foo
{
   public string Bar { get; internal set; }
}

Недвижимость в C# 2.0

В C# 2.0 вы можете установить доступность get и set.

Код ниже показывает, как создать приватную переменную с внутренним набором и публичным get. Свойство Hour теперь может быть установлено только из кода в том же модуле (dll), но доступ к нему может получить весь код, использующий модуль (dll), содержащий класс.

// private member variables
private int hour;

// create a property
public int Hour
{
  get { return hour; }
  internal set { hour = value; }
}

Если установщик свойства помечен модификатором внутреннего доступа, только классы, находящиеся в сборке, могут устанавливать это свойство.

public string MyProperty { get; internal set; }

Учитывая имущество объявлено public string MyString {get; internal set;} это означает, что

  • Вы можете прочитать значение свойства из любого места в вашем приложении (public string MyString)
  • но вы можете записать новое значение в свойство только из сборки, в которой оно объявлено, или из дружественных сборок. (internal set;)

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

Это конструкция, которая позволяет устанавливать значение свойства только с помощью кода в той же сборке.

В основном он используется с такими конструкторами, как

public class CustomerConfig
{
     public string CustomerName { get; internal set; }
     public CustomerConfig(string customerName)
     {
        this.CustomerName = customerName;
     }
}

Таким образом, вы можете предварительно установить некоторые параметры и сделать их доступными только для чтения для других сборок в вашем коде.

Другие вопросы по тегам