PropertyInfo.GetAccessors Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Returns an array of the get
and set
accessors on this property.
Overloads
GetAccessors() |
Returns an array whose elements reflect the public |
GetAccessors(Boolean) |
Returns an array whose elements reflect the public and, if specified, non-public |
GetAccessors()
- Source:
- PropertyInfo.cs
- Source:
- PropertyInfo.cs
- Source:
- PropertyInfo.cs
Returns an array whose elements reflect the public get
and set
accessors of the property reflected by the current instance.
public:
cli::array <System::Reflection::MethodInfo ^> ^ GetAccessors();
public:
virtual cli::array <System::Reflection::MethodInfo ^> ^ GetAccessors();
public System.Reflection.MethodInfo[] GetAccessors ();
member this.GetAccessors : unit -> System.Reflection.MethodInfo[]
abstract member GetAccessors : unit -> System.Reflection.MethodInfo[]
override this.GetAccessors : unit -> System.Reflection.MethodInfo[]
Public Function GetAccessors () As MethodInfo()
Returns
An array of MethodInfo objects that reflect the public get
and set
accessors of the property reflected by the current instance, if found; otherwise, this method returns an array with zero (0) elements.
Implements
Examples
The following example retrieves the public accessors of the ClassWithProperty.Caption
property and displays information about them. It also calls the Invoke method of the setter to set the property value and of the getter to retrieve the property value.
using System;
using System.Reflection;
// Define a property.
public class ClassWithProperty
{
private string _caption = "A Default caption";
public string Caption
{
get { return _caption; }
set { if(_caption != value) _caption = value; }
}
}
class Example
{
public static void Main()
{
ClassWithProperty test = new ClassWithProperty();
Console.WriteLine("The Caption property: {0}", test.Caption);
Console.WriteLine("----------");
// Get the type and PropertyInfo.
Type t = Type.GetType("ClassWithProperty");
PropertyInfo propInfo = t.GetProperty("Caption");
// Get the public GetAccessors method.
MethodInfo[] methInfos = propInfo.GetAccessors();
Console.WriteLine("There are {0} accessors.",
methInfos.Length);
for(int ctr = 0; ctr < methInfos.Length; ctr++) {
MethodInfo m = methInfos[ctr];
Console.WriteLine("Accessor #{0}:", ctr + 1);
Console.WriteLine(" Name: {0}", m.Name);
Console.WriteLine(" Visibility: {0}", GetVisibility(m));
Console.Write(" Property Type: ");
// Determine if this is the property getter or setter.
if (m.ReturnType == typeof(void)) {
Console.WriteLine("Setter");
Console.WriteLine(" Setting the property value.");
// Set the value of the property.
m.Invoke(test, new object[] { "The Modified Caption" } );
}
else {
Console.WriteLine("Getter");
// Get the value of the property.
Console.WriteLine(" Property Value: {0}",
m.Invoke(test, new object[] {} ));
}
}
Console.WriteLine("----------");
Console.WriteLine("The Caption property: {0}", test.Caption);
}
static string GetVisibility(MethodInfo m)
{
string visibility = "";
if (m.IsPublic)
return "Public";
else if (m.IsPrivate)
return "Private";
else
if (m.IsFamily)
visibility = "Protected ";
else if (m.IsAssembly)
visibility += "Assembly";
return visibility;
}
}
// The example displays the following output:
// The Caption property: A Default caption
// ----------
// There are 2 accessors.
// Accessor #1:
// Name: get_Caption
// Visibility: Public
// Property Type: Getter
// Property Value: A Default caption
// Accessor #2:
// Name: set_Caption
// Visibility: Public
// Property Type: Setter
// Setting the property value.
// ----------
// The Caption property: The Modified Caption
Imports System.Reflection
' Define a property.
Public Class ClassWithProperty
Private _caption As String = "A Default caption"
Public Property Caption As String
Get
Return _caption
End Get
Set
If _caption <> value Then _caption = value
End Set
End Property
End Class
Module Example
Public Sub Main()
Dim test As New ClassWithProperty()
Console.WriteLine("The Caption property: {0}", test.Caption)
Console.WriteLine("----------")
' Get the type and PropertyInfo.
Dim t As Type = Type.GetType("ClassWithProperty")
Dim propInfo As PropertyInfo = t.GetProperty("Caption")
' Get all the accessors.
Dim methInfos() As MethodInfo = propInfo.GetAccessors()
Console.WriteLine("There are {0} accessors.",
methInfos.Length)
For ctr As Integer = 0 To methInfos.Length - 1
Dim m As MethodInfo = methInfos(ctr)
Console.WriteLine("Accessor #{0}:", ctr + 1)
Console.WriteLine(" Name: {0}", m.Name)
Console.WriteLine(" Visibility: {0}", GetVisibility(m))
Console.Write(" Property Type: ")
' Determine if this is the property getter or setter.
'' If (m.ReturnType == typeof(void))
If m.ReturnType Is GetType(Void) Then
Console.WriteLine("Setter")
Console.WriteLine(" Setting the property value.")
' Set the value of the property.
m.Invoke(test, { "The Modified Caption" } )
Else
Console.WriteLine("Getter")
' Get the value of the property.
Console.WriteLine(" Property Value: {0}",
m.Invoke(test, {} ))
End If
Next
Console.WriteLine("----------")
Console.WriteLine("The Caption property: {0}", test.Caption)
End Sub
Private Function GetVisibility(m As MethodInfo) As String
Dim visibility As String = ""
If m.IsPublic Then
Return "Public"
ElseIf m.IsPrivate Then
Return "Private"
Else
If m.IsFamily Then
visibility = "Protected "
ElseIf m.IsAssembly Then
visibility += "Assembly"
End If
End If
Return visibility
End Function
End Module
' The example displays the following output:
' The Caption property: A Default caption
' ----------
' There are 2 accessors.
' Accessor #1:
' Name: get_Caption
' Visibility: Public
' Property Type: Getter
' Property Value: A Default caption
' Accessor #2:
' Name: set_Caption
' Visibility: Public
' Property Type: Setter
' Setting the property value.
' ----------
' The Caption property: The Modified Caption
Remarks
To call the GetAccessors method:
Get a Type object that represents the class.
From the Type object, get the PropertyInfo object.
From the PropertyInfo object, call the GetAccessors method.
Applies to
GetAccessors(Boolean)
- Source:
- PropertyInfo.cs
- Source:
- PropertyInfo.cs
- Source:
- PropertyInfo.cs
Returns an array whose elements reflect the public and, if specified, non-public get
and set
accessors of the property reflected by the current instance.
public:
abstract cli::array <System::Reflection::MethodInfo ^> ^ GetAccessors(bool nonPublic);
public abstract System.Reflection.MethodInfo[] GetAccessors (bool nonPublic);
abstract member GetAccessors : bool -> System.Reflection.MethodInfo[]
Public MustOverride Function GetAccessors (nonPublic As Boolean) As MethodInfo()
Parameters
- nonPublic
- Boolean
Indicates whether non-public methods should be returned in the returned array. true
if non-public methods are to be included; otherwise, false
.
Returns
An array whose elements reflect the get
and set
accessors of the property reflected by the current instance. If nonPublic
is true
, this array contains public and non-public get
and set
accessors. If nonPublic
is false
, this array contains only public get
and set
accessors. If no accessors with the specified visibility are found, this method returns an array with zero (0) elements.
Implements
Examples
The following example retrieves the accessors of the ClassWithProperty.Caption
property and displays information about them. It also calls the Invoke method of the setter to set the property value and of the getter to retrieve the property value.
using System;
using System.Reflection;
// Define a property.
public class ClassWithProperty
{
private string _caption = "A Default caption";
public string Caption
{
get { return _caption; }
set { if(_caption != value) _caption = value; }
}
}
class Example
{
public static void Main()
{
ClassWithProperty test = new ClassWithProperty();
Console.WriteLine("The Caption property: {0}", test.Caption);
Console.WriteLine("----------");
// Get the type and PropertyInfo.
Type t = Type.GetType("ClassWithProperty");
PropertyInfo propInfo = t.GetProperty("Caption");
// Get the public GetAccessors method.
MethodInfo[] methInfos = propInfo.GetAccessors(true);
Console.WriteLine("There are {0} accessors.",
methInfos.Length);
for(int ctr = 0; ctr < methInfos.Length; ctr++) {
MethodInfo m = methInfos[ctr];
Console.WriteLine("Accessor #{0}:", ctr + 1);
Console.WriteLine(" Name: {0}", m.Name);
Console.WriteLine(" Visibility: {0}", GetVisibility(m));
Console.Write(" Property Type: ");
// Determine if this is the property getter or setter.
if (m.ReturnType == typeof(void)) {
Console.WriteLine("Setter");
Console.WriteLine(" Setting the property value.");
// Set the value of the property.
m.Invoke(test, new object[] { "The Modified Caption" } );
}
else {
Console.WriteLine("Getter");
// Get the value of the property.
Console.WriteLine(" Property Value: {0}",
m.Invoke(test, new object[] {} ));
}
}
Console.WriteLine("----------");
Console.WriteLine("The Caption property: {0}", test.Caption);
}
static string GetVisibility(MethodInfo m)
{
string visibility = "";
if (m.IsPublic)
return "Public";
else if (m.IsPrivate)
return "Private";
else
if (m.IsFamily)
visibility = "Protected ";
else if (m.IsAssembly)
visibility += "Assembly";
return visibility;
}
}
// The example displays the following output:
// The Caption property: A Default caption
// ----------
// There are 2 accessors.
// Accessor #1:
// Name: get_Caption
// Visibility: Public
// Property Type: Getter
// Property Value: A Default caption
// Accessor #2:
// Name: set_Caption
// Visibility: Public
// Property Type: Setter
// Setting the property value.
// ----------
// The Caption property: The Modified Caption
Imports System.Reflection
' Define a property.
Public Class ClassWithProperty
Private _caption As String = "A Default caption"
Public Property Caption As String
Get
Return _caption
End Get
Set
If _caption <> value Then _caption = value
End Set
End Property
End Class
Module Example
Public Sub Main()
Dim test As New ClassWithProperty()
Console.WriteLine("The Caption property: {0}", test.Caption)
Console.WriteLine("----------")
' Get the type and PropertyInfo.
Dim t As Type = Type.GetType("ClassWithProperty")
Dim propInfo As PropertyInfo = t.GetProperty("Caption")
' Get all the accessors.
Dim methInfos() As MethodInfo = propInfo.GetAccessors(True)
Console.WriteLine("There are {0} accessors.",
methInfos.Length)
For ctr As Integer = 0 To methInfos.Length - 1
Dim m As MethodInfo = methInfos(ctr)
Console.WriteLine("Accessor #{0}:", ctr + 1)
Console.WriteLine(" Name: {0}", m.Name)
Console.WriteLine(" Visibility: {0}", GetVisibility(m))
Console.Write(" Property Type: ")
' Determine if this is the property getter or setter.
'' If (m.ReturnType == typeof(void))
If m.ReturnType Is GetType(Void) Then
Console.WriteLine("Setter")
Console.WriteLine(" Setting the property value.")
' Set the value of the property.
m.Invoke(test, { "The Modified Caption" } )
Else
Console.WriteLine("Getter")
' Get the value of the property.
Console.WriteLine(" Property Value: {0}",
m.Invoke(test, {} ))
End If
Next
Console.WriteLine("----------")
Console.WriteLine("The Caption property: {0}", test.Caption)
End Sub
Private Function GetVisibility(m As MethodInfo) As String
Dim visibility As String = ""
If m.IsPublic Then
Return "Public"
ElseIf m.IsPrivate Then
Return "Private"
Else
If m.IsFamily Then
visibility = "Protected "
ElseIf m.IsAssembly Then
visibility += "Assembly"
End If
End If
Return visibility
End Function
End Module
' The example displays the following output:
' The Caption property: A Default caption
' ----------
' There are 2 accessors.
' Accessor #1:
' Name: get_Caption
' Visibility: Public
' Property Type: Getter
' Property Value: A Default caption
' Accessor #2:
' Name: set_Caption
' Visibility: Public
' Property Type: Setter
' Setting the property value.
' ----------
' The Caption property: The Modified Caption
Remarks
To call the GetAccessors method:
Get a Type object that represents the class.
From the Type object, get the PropertyInfo object.
From the PropertyInfo object, call the GetAccessors method.
Applies to
Обратна връзка
https://aka.ms/ContentUserFeedback.
Очаквайте скоро: През цялата 2024 г. постепенно ще отстраняваме проблемите в GitHub като механизъм за обратна връзка за съдържание и ще го заменим с нова система за обратна връзка. За повече информация вижте:Подаване и преглед на обратна връзка за