Windows apps
Collapse the table of content
Expand the table of content
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

PropertyInfo.CanRead Property

Gets a value indicating whether the property can be read.

[Visual Basic]
Public MustOverride ReadOnly Property CanRead As Boolean
[C#]
public abstract bool CanRead {get;}
[C++]
public: __property virtual bool get_CanRead() = 0;
[JScript]
public abstract function get CanRead() : Boolean;

Property Value

true if this property can be read; otherwise, false.

Remarks

If the property does not have a get accessor, it cannot be read.

To get the CanRead property, first get the class Type. From the Type, get the PropertyInfo. From the PropertyInfo, get the CanRead value.

Example

The following example defines two properties. The first property is readable and the CanRead property is true. The second property is not readable (there is no get accessor), and the CanRead property is false.

[Visual Basic] 
Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic

' Define one readable property and one not readable.
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 WriteOnly Property Caption() As String
        Set(ByVal Value As String)
            If myCaption <> value Then
                myCaption = value
            End If
        End Set
    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()

        Console.Write(ControlChars.Cr & "Mypropertya.Caption = " & _
           Mypropertya.Caption)
        ' Mypropertyb.Caption cannot be read because
        ' there is no get accessor.
        ' 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 CanRead property.
        Console.Write(ControlChars.CrLf & "CanRead a - " & _
           Mypropertyinfoa.CanRead)

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

        Return 0
    End Function
End Class

[C#] 
using System;
using System.Reflection;
 
// Define one readable property and one not readable.
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
    {
        set{if(caption!=value) {caption = value;}
        }
    }
}
  
class Mypropertyinfo
{
    public static int Main()
    {
        Console.WriteLine("\nReflection.PropertyInfo");
  
        // Define two properties.
        Mypropertya Mypropertya = new Mypropertya();
        Mypropertyb Mypropertyb = new Mypropertyb();
  
        Console.Write("\nMypropertya.Caption = " + Mypropertya.Caption);
        // Mypropertyb.Caption cannot be read, because
        // there is no get accessor.
  
        // 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 CanRead property.
        Console.Write("\nCanRead a - " + Mypropertyinfoa.CanRead);
        Console.Write("\nCanRead b - " + Mypropertyinfob.CanRead);
  
        return 0;
    }
}

[C++] 
#using <mscorlib.dll>
using namespace System;
using namespace System::Reflection;

// Define one readable property and one not readable.
public __gc class Mypropertya
{
private:
    String* caption;
public:
    Mypropertya() : caption(S"A Default caption") {}
    __property String* get_Caption() {return caption;}
    __property void set_Caption(String* value) {
        if(caption!=value) {
            caption = value;
        }
    }
};
public __gc class Mypropertyb
{
private:
    String* caption;
public:
    Mypropertyb() : caption(S"B Default caption") {}
    __property void set_Caption( String* value ) {
        if(caption!=value) {
            caption = value;
        }
    }
};

int main()
{
    Console::WriteLine(S"\nReflection.PropertyInfo");

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

    Console::Write(S"\nMypropertya->Caption = {0}", mypropertya->Caption);
    // Mypropertyb.Caption cannot be read, because
    // there is no get accessor.

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

    // Get and display the CanRead property.
    Console::Write(S"\nCanRead a - {0}", __box(Mypropertyinfoa->CanRead));
    Console::Write(S"\nCanRead b - {0}", __box(Mypropertyinfob->CanRead));

    return 0;
}

[JScript] 
import System;
import System.Reflection;
 
//Make two properties, one readable and on not readable
 public class Mypropertya
 {
    private var caption : String = "A Default caption";
    public function get Caption() : String {
        return caption;
    }
    public function set Caption(value:String)
    {
        if(caption!=value) {caption = value;}
    }
 }
 public class Mypropertyb
 {
    private var caption : String = "B Default caption";
    public function set Caption(value:String) {
        if(caption!=value) {caption = value;}
    }
 }
  
 class Mypropertyinfo
 {
    public static function Main() : void
    {
       Console.WriteLine("\nReflection.PropertyInfo");
  
       //Build two properties
       var mypropertya : Mypropertya = new Mypropertya();
       var mypropertyb : Mypropertyb = new Mypropertyb();
  
       Console.Write("\nmypropertya.Caption = " + mypropertya.Caption);
       //Note: Mypropertyb.Caption cannot be read as
       // there is no get accessor
  
       //Get the type and PropertyInfo
       var MyTypea : Type = Type.GetType("Mypropertya");
       var Mypropertyinfoa : PropertyInfo = MyTypea.GetProperty("Caption");
       var MyTypeb : Type = Type.GetType("Mypropertyb");
       var Mypropertyinfob : PropertyInfo = MyTypeb.GetProperty("Caption");
  
       //Get and display the CanRead property
      
       Console.Write("\nCanRead a - " + Mypropertyinfoa.CanRead);
      
       Console.Write("\nCanRead b - " + Mypropertyinfob.CanRead);
  
    }
 }
 Mypropertyinfo.Main();
 /*
 Produces the following output
 
 Reflection.PropertyInfo
 Mypropertya.Caption = A Default caption
 CanRead a - True
 CanRead b - False
 */

Requirements

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework, Common Language Infrastructure (CLI) Standard

See Also

PropertyInfo Class | PropertyInfo Members | System.Reflection Namespace

Show:
© 2017 Microsoft