ReadOnlyAttribute Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает, привязано ли свойство, к которым привязан этот атрибут только для чтения или чтения или записи. Этот класс не может быть унаследован.
public ref class ReadOnlyAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.All)]
public sealed class ReadOnlyAttribute : Attribute
public sealed class ReadOnlyAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.All)>]
type ReadOnlyAttribute = class
inherit Attribute
type ReadOnlyAttribute = class
inherit Attribute
Public NotInheritable Class ReadOnlyAttribute
Inherits Attribute
- Наследование
- Атрибуты
Примеры
Следующий пример кода помечает свойство как доступное только для чтения.
[ReadOnly(true)]
int get()
{
// Insert code here.
return 0;
}
}
[ReadOnly(true)]
public int MyProperty =>
// Insert code here.
0;
Public ReadOnly Property MyProperty() As Integer
Get
' Insert code here.
Return 0
End Get
End Property
В следующем примере кода показано, как проверить значение ReadOnlyAttribute для MyProperty. Во-первых, код получает PropertyDescriptorCollection все свойства объекта. Затем он индексирует в PropertyDescriptorCollection получение MyProperty. Затем он возвращает атрибуты для этого свойства и сохраняет их в переменной атрибутов.
В примере представлено два разных способа проверки значения ReadOnlyAttribute. Во втором фрагменте кода в примере вызывается Equals метод. В последнем фрагменте кода в примере используется IsReadOnly свойство для проверки значения.
// Gets the attributes for the property.
AttributeCollection^ attributes = TypeDescriptor::GetProperties( this )[ "MyProperty" ]->Attributes;
// Checks to see whether the value of the ReadOnlyAttribute is Yes.
if ( attributes[ ReadOnlyAttribute::typeid ]->Equals( ReadOnlyAttribute::Yes ) )
{
// Insert code here.
}
// This is another way to see whether the property is read-only.
ReadOnlyAttribute^ myAttribute = dynamic_cast<ReadOnlyAttribute^>(attributes[ ReadOnlyAttribute::typeid ]);
if ( myAttribute->IsReadOnly )
{
// Insert code here.
}
// Gets the attributes for the property.
AttributeCollection attributes =
TypeDescriptor.GetProperties(this)["MyProperty"].Attributes;
// Checks to see whether the value of the ReadOnlyAttribute is Yes.
if (attributes[typeof(ReadOnlyAttribute)].Equals(ReadOnlyAttribute.Yes))
{
// Insert code here.
}
// This is another way to see whether the property is read-only.
ReadOnlyAttribute myAttribute =
(ReadOnlyAttribute)attributes[typeof(ReadOnlyAttribute)];
if (myAttribute.IsReadOnly)
{
// Insert code here.
}
' Gets the attributes for the property.
Dim attributes As AttributeCollection = _
TypeDescriptor.GetProperties(Me)("MyProperty").Attributes
' Checks to see whether the value of the ReadOnlyAttribute is Yes.
If attributes(GetType(ReadOnlyAttribute)).Equals(ReadOnlyAttribute.Yes) Then
' Insert code here.
End If
' This is another way to see whether the property is read-only.
Dim myAttribute As ReadOnlyAttribute = _
CType(attributes(GetType(ReadOnlyAttribute)), ReadOnlyAttribute)
If myAttribute.IsReadOnly Then
' Insert code here.
End If
Если вы помечаете класс с ReadOnlyAttributeпомощью этого класса, используйте следующий пример кода, чтобы проверить значение.
AttributeCollection^ attributes = TypeDescriptor::GetAttributes( MyProperty );
if ( attributes[ ReadOnlyAttribute::typeid ]->Equals( ReadOnlyAttribute::Yes ) )
{
// Insert code here.
}
AttributeCollection attributes =
TypeDescriptor.GetAttributes(MyProperty);
if (attributes[typeof(ReadOnlyAttribute)].Equals(ReadOnlyAttribute.Yes))
{
// Insert code here.
}
Dim attributes As AttributeCollection = TypeDescriptor.GetAttributes(MyProperty)
If attributes(GetType(ReadOnlyAttribute)).Equals(ReadOnlyAttribute.Yes) Then
' Insert code here.
End If
Комментарии
Элементы, помеченные набором ReadOnlyAttributetrue или не имеющие Set метода, не могут быть изменены. Элементы, не имеющие этого атрибута или помеченные набором ReadOnlyAttributefalse для чтения и записи, и их можно изменить. Значение по умолчанию — No.
Это важно
Класс PropertyDescriptor применяется в среде разработки ReadOnlyAttribute и во время выполнения. При помечаете свойство с ReadOnlyAttribute заданным значением true, значение этого атрибута присваивается постоянному члену Yes. Для свойства, помеченного набором ReadOnlyAttributefalse, значение равно No. Таким образом, если вы хотите проверить значение этого атрибута в коде, необходимо указать атрибут как ReadOnlyAttribute.Yes или ReadOnlyAttribute.No.
Дополнительные сведения см. в разделе Атрибуты.
Конструкторы
| Имя | Описание |
|---|---|
| ReadOnlyAttribute(Boolean) |
Инициализирует новый экземпляр класса ReadOnlyAttribute. |
Поля
| Имя | Описание |
|---|---|
| Default |
Указывает значение по умолчанию для ReadOnlyAttributeобъекта , т No . е. свойство, к которому привязан этот атрибут, является чтение и запись. Это |
| No |
Указывает, что свойство, к которому привязан этот атрибут, является чтение и запись и может быть изменено. Это |
| Yes |
Указывает, что свойство, к которому привязан этот атрибут, является только для чтения и не может быть изменено в обозревателе серверов. Это |
Свойства
| Имя | Описание |
|---|---|
| IsReadOnly |
Возвращает значение, указывающее, привязано ли свойство к этому атрибуту только для чтения. |
| TypeId |
При реализации в производном классе получает уникальный идентификатор для этого Attribute. (Унаследовано от Attribute) |
Методы
| Имя | Описание |
|---|---|
| Equals(Object) |
Указывает, равны ли этот экземпляр и указанный объект. |
| GetHashCode() |
Возвращает хэш-код для этого экземпляра. |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| IsDefaultAttribute() |
Определяет, является ли этот атрибут значением по умолчанию. |
| Match(Object) |
При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту. (Унаследовано от Attribute) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации. (Унаследовано от Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Извлекает сведения о типе объекта, который можно использовать для получения сведений о типе для интерфейса. (Унаследовано от Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1). (Унаследовано от Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Предоставляет доступ к свойствам и методам, предоставляемым объектом. (Унаследовано от Attribute) |