Share via

Facebook x.com LinkedIn Email

PropertyInfo.CanRead Property

Microsoft Silverlight will reach end of support after October 2021. Learn more.

Gets a value indicating whether the property can be read.

Namespace: System.Reflection
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public MustOverride ReadOnly Property CanRead As Boolean
public abstract bool CanRead { get; }

Property Value

Type: System.Boolean
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.

Examples

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.

Imports System.Reflection
Class Example
 ' Define one readable property and one that is not readable.
 Private _caption As String = "A Default Caption"
 Public Property Caption() As String
 Get
 Return _caption 
 End Get
 Set(ByVal Value As String)
 If _caption <> Value Then
 _caption = Value
 End If
 End Set
 End Property
 Private _text As String = "Default text"
 Public WriteOnly Property Text() As String
 Set(ByVal Value As String)
 If _text <> Value Then
 _text = Value
 End If
 End Set
 End Property
 Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock) 
 outputBlock.Text &= "Reflection.PropertyInfo.CanRead" & vbLf & vbLf
 Dim ex As New Example()
 outputBlock.Text &= "Caption = " & ex.Caption & vbLf
 ' The Text property cannot be read because it has no get accessor. The 
 ' following line of code causes a compile error:
 'outputBlock.Text &= "Text = " & ex.Text & vbLf
 Dim captionInfo As PropertyInfo = GetType(Example).GetProperty("Caption")
 Dim textInfo As PropertyInfo = GetType(Example).GetProperty("Text")
 ' Display the CanRead properties.
 outputBlock.Text &= "CanRead for the Caption property: " & _
 captionInfo.CanRead & vbLf
 outputBlock.Text &= "CanRead for the Text property: " & _
 textInfo.CanRead & vbLf
 End Sub
End Class
' This example produces the following output:
'
'Reflection.PropertyInfo.CanRead
'
'Caption = A Default Caption
'CanRead for the Caption property: True
'CanRead for the Text property: False
using System;
using System.Reflection;
class Example
{
 // Define one readable property and one that is not readable.
 private string _caption = "A Default Caption";
 public string Caption 
 {
 get
 {
 return _caption;
 }
 set
 {
 if (_caption!=value)
 {
 _caption = value;
 }
 }
 }
 private string _text = "Default text";
 public string Text 
 {
 set
 {
 if (_text!=value)
 {
 _text = value;
 }
 }
 }
 public static void Demo(System.Windows.Controls.TextBlock outputBlock)
 {
 outputBlock.Text += "Reflection.PropertyInfo.CanRead\n\n";
 Example ex = new Example();
 outputBlock.Text += "Caption = " + ex.Caption + "\n";
 // The Text property cannot be read because it has no get accessor. The 
 // following line of code causes a compile error:
 //outputBlock.Text += "Text = " + ex.Text + "\n";
 PropertyInfo captionInfo = typeof(Example).GetProperty("Caption");
 PropertyInfo textInfo = typeof(Example).GetProperty("Text");
 // Display the CanRead properties.
 outputBlock.Text += 
 "CanRead for the Caption property: " + captionInfo.CanRead + "\n";
 outputBlock.Text += 
 "CanRead for the Text property: " + textInfo.CanRead + "\n";
 }
}
/* This example produces the following output:
Reflection.PropertyInfo.CanRead
Caption = A Default Caption
CanRead for the Caption property: True
CanRead for the Text property: False
 */

Version Information

Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.


  • Last updated on 2011年11月18日