Поделиться через


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
Наследование
ReadOnlyAttribute
Атрибуты

Примеры

Следующий пример кода помечает свойство как доступное только для чтения.

   [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 . е. свойство, к которому привязан этот атрибут, является чтение и запись. Это static поле доступно только для чтения.

No

Указывает, что свойство, к которому привязан этот атрибут, является чтение и запись и может быть изменено. Это static поле доступно только для чтения.

Yes

Указывает, что свойство, к которому привязан этот атрибут, является только для чтения и не может быть изменено в обозревателе серверов. Это static поле доступно только для чтения.

Свойства

Имя Описание
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)

Применяется к

См. также раздел