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


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 {
    get {
       // Insert code here.
       return 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

Комментарии

Элементы, помеченные как ReadOnlyAttribute или true не имеющие Set метода, не могут быть изменены. Члены, у которых нет этого атрибута или помечены ReadOnlyAttribute как , false являются элементами для чтения и записи, и их можно изменить. Значение по умолчанию — No.

Важно!

Класс PropertyDescriptor применяет ReadOnlyAttribute в среде разработки и во время выполнения. Если свойство помечается значением ReadOnlyAttributetrue, значением этого атрибута является константный член Yes. Для свойства, помеченного с заданным ReadOnlyAttribute значением false, значение равно 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()

Определяет, является ли этот атрибут используемым по умолчанию.

IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
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)

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

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