プロパティに書き込むことができるかどうかを示す値を取得します。
Public MustOverride ReadOnly Property CanWrite As Boolean
[C#]
public abstract bool CanWrite {get;}
[C++]
public: __property virtual bool get_CanWrite() = 0;
[JScript]
public abstract function get CanWrite() : Boolean;
プロパティ値
このプロパティに書き込むことができる場合は true 。それ以外の場合は false 。
解説
プロパティに set アクセサがない場合は、書き込むことができません。
CanWrite プロパティを取得するには、最初に Type クラスを取得します。そして、その Type から PropertyInfo を取得します。 PropertyInfo から CanWrite 値を取得します。
使用例
2 つのプロパティを定義する例を次に示します。最初のプロパティは書き込み可能で、 CanWrite プロパティは true です。2 番目のプロパティは書き込み不可で (set アクセサなし)、 CanWrite プロパティは false です。
Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic
' 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
[C#]
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;
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::Reflection;
// Define one writable property and one not writable.
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 String* get_Caption() {
return caption;
}
};
int main()
{
Console::WriteLine(S"\nReflection.PropertyInfo");
// Define two properties.
Mypropertya* mypropertya = new Mypropertya();
Mypropertyb* mypropertyb = new Mypropertyb();
// Read and display the property.
Console::Write(S"\nMypropertya->Caption = {0}", mypropertya->Caption);
Console::Write(S"\nMypropertyb->Caption = {0}", mypropertyb->Caption);
// Write to the property.
mypropertya->Caption = S"A- No Change";
// Mypropertyb.Caption cannot be written to because
// there is no set accessor.
// Read and display the property.
Console::Write(S"\nMypropertya->Caption = {0}", mypropertya->Caption);
Console::Write (S"\nMypropertyb->Caption = {0}", mypropertyb->Caption);
// 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 CanWrite property.
Console::Write(S"\nCanWrite a - {0}", __box(Mypropertyinfoa->CanWrite));
Console::Write(S"\nCanWrite b - {0}", __box(Mypropertyinfob->CanWrite));
return 0;
}
[JScript]
import System;
import System.Reflection;
//Make two properties, one writable and one not writable
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 get Caption() : String {
return caption;
}
}
class Mypropertyinfo
{
public static function Main() : void
{
Console.WriteLine("\nReflection.PropertyInfo");
//Build two properties
var mypropertya : Mypropertya = new Mypropertya();
var 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- I have been changed";
//Note: Mypropertyb.Caption cannot be written as
// 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
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 CanWrite property
Console.Write("\nCanWrite a - " + Mypropertyinfoa.CanWrite);
Console.Write("\nCanWrite b - " + Mypropertyinfob.CanWrite);
}
}
Mypropertyinfo.Main();
/*
This code produces the following output:
Reflection.PropertyInfo
mypropertya.Caption = A Default caption
mypropertyb.Caption = B Default caption
mypropertya.Caption = A- I have been changed
mypropertyb.Caption = B Default caption
CanWrite a - true
CanWrite b - false
*/
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard
参照
PropertyInfo クラス | PropertyInfo メンバ | System.Reflection 名前空間