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


PropertyInfo.CanWrite Свойство

Определение

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

public:
 abstract property bool CanWrite { bool get(); };
public abstract bool CanWrite { get; }
member this.CanWrite : bool
Public MustOverride ReadOnly Property CanWrite As Boolean

Значение свойства

Значение true, если свойство доступно для записи; в обратном случае — значение false.

Реализации

Примеры

В следующем примере определяются два свойства. Первое свойство доступно для записи, а CanWrite свойство — true. Второе свойство не доступно для записи (метод доступа отсутствует set ), а CanWrite свойство имеет значение false.

using System;
using System.Reflection;

 // Define one writable property and one not writable.
public class Mypropertya
{
    private string caption = "A Default caption";
    public string Caption
    {
        get{return caption;}
        set {if(caption!=value) {caption = value;}
        }
    }
}
public class Mypropertyb
{
    private string caption = "B Default caption";
    public string Caption
    {
        get{return caption;}
    }
}

class Mypropertyinfo
{
    public static int Main()
    {
        Console.WriteLine("\nReflection.PropertyInfo");

        // Define two properties.
        Mypropertya Mypropertya = new Mypropertya();
        Mypropertyb Mypropertyb = new Mypropertyb();

        // Read and display the property.
        Console.Write("\nMypropertya.Caption = " + Mypropertya.Caption);
        Console.Write("\nMypropertyb.Caption = " + Mypropertyb.Caption);

        // Write to the property.
        Mypropertya.Caption = "A- No Change";
        // Mypropertyb.Caption cannot be written to because
        // there is no set accessor.

        // Read and display the property.
        Console.Write("\nMypropertya.Caption = " + Mypropertya.Caption);
        Console.Write ("\nMypropertyb.Caption = " + Mypropertyb.Caption);

        // Get the type and PropertyInfo.
        Type MyTypea = Type.GetType("Mypropertya");
        PropertyInfo Mypropertyinfoa = MyTypea.GetProperty("Caption");
        Type MyTypeb = Type.GetType("Mypropertyb");
        PropertyInfo Mypropertyinfob = MyTypeb.GetProperty("Caption");

        // Get and display the CanWrite property.

        Console.Write("\nCanWrite a - " + Mypropertyinfoa.CanWrite);

        Console.Write("\nCanWrite b - " + Mypropertyinfob.CanWrite);

        return 0;
    }
}
Imports System.Reflection

' Define one writable property and one not writable.
Public Class Mypropertya
    Private myCaption As String = "A Default caption"

    Public Property Caption() As String
        Get
            Return myCaption
        End Get
        Set(ByVal Value As String)
            If myCaption <> value Then
                myCaption = value
            End If
        End Set
    End Property
End Class

Public Class Mypropertyb
    Private myCaption As String = "B Default caption"

    Public ReadOnly Property Caption() As String
        Get
            Return myCaption
        End Get
    End Property
End Class

Class Mypropertyinfo

    Public Shared Function Main() As Integer
        Console.WriteLine(ControlChars.CrLf & "Reflection.PropertyInfo")

        ' Define two properties.
        Dim Mypropertya As New Mypropertya()
        Dim Mypropertyb As New Mypropertyb()

        ' Read and display the property.
        Console.Write(ControlChars.CrLf & "Mypropertya.Caption = " & _
           Mypropertya.Caption)
        Console.Write(ControlChars.CrLf & "Mypropertyb.Caption = " & _
           Mypropertyb.Caption)

        ' Write to the property.
        Mypropertya.Caption = "A- No Change"
        ' Mypropertyb.Caption cannot be written to because
        ' there is no set accessor.
        ' Read and display the property.
        Console.Write(ControlChars.CrLf & "Mypropertya.Caption = " & _
           Mypropertya.Caption)
        Console.Write(ControlChars.CrLf & "Mypropertyb.Caption = " & _
           Mypropertyb.Caption)

        ' Get the type and PropertyInfo.
        Dim MyTypea As Type = Type.GetType("Mypropertya")
        Dim Mypropertyinfoa As PropertyInfo = MyTypea.GetProperty("Caption")
        Dim MyTypeb As Type = Type.GetType("Mypropertyb")
        Dim Mypropertyinfob As PropertyInfo = MyTypeb.GetProperty("Caption")

        ' Get and display the CanWrite property.
        Console.Write(ControlChars.CrLf & "CanWrite a - " & _
           Mypropertyinfoa.CanWrite)

        Console.Write(ControlChars.CrLf & "CanWrite b - " & _
           Mypropertyinfob.CanWrite)

        Return 0
    End Function
End Class

Комментарии

CanWrite возвращает значение true , если свойство имеет set метод доступа, даже если методом доступа является private, internal (или Friend в Visual Basic) или protected. Если свойство не имеет set метода доступа, метод возвращает false.

Чтобы получить значение свойства, выполните следующие CanWrite действия:

  1. Type Получение объекта типа, включающего свойство .

  2. Type.GetProperty Вызовите , чтобы получить PropertyInfo объект , представляющий свойство .

  3. Получение значения CanWrite свойства .

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