Что такое внутреннее свойство 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 вы можете установить доступность 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;
}
}
Таким образом, вы можете предварительно установить некоторые параметры и сделать их доступными только для чтения для других сборок в вашем коде.