PropertyInfo.CanWrite プロパティ
アセンブリ: mscorlib (mscorlib.dll 内)


プロパティに 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
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; } }
using namespace System; using namespace System::Reflection; // Define one writable property and one not writable. public ref class Mypropertya { private: String^ caption; public: Mypropertya() : caption( "A Default caption" ) {} property String^ Caption { String^ get() { return caption; } void set( String^ value ) { if ( caption != value ) { caption = value; } } } }; public ref class Mypropertyb { private: String^ caption; public: Mypropertyb() : caption( "B Default caption" ) {} property String^ Caption { String^ get() { return caption; } } }; int main() { Console::WriteLine( "\nReflection.PropertyInfo" ); // Define two properties. Mypropertya^ mypropertya = gcnew Mypropertya; Mypropertyb^ mypropertyb = gcnew Mypropertyb; // Read and display the property. Console::Write( "\nMypropertya->Caption = {0}", mypropertya->Caption ); Console::Write( "\nMypropertyb->Caption = {0}", 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 = {0}", mypropertya->Caption ); Console::Write( "\nMypropertyb->Caption = {0}", 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 - {0}", Mypropertyinfoa->CanWrite ); Console::Write( "\nCanWrite b - {0}", Mypropertyinfob->CanWrite ); return 0; }
import System.*; import System.Reflection.*; // Define one writable property and one not writable. public class MyPropertyA { private String caption = "A Default caption"; /** @property */ public String get_Caption() { return caption ; } //get_Caption /** @property */ public void set_Caption (String value) { if (caption != value) { caption = value; } } //set_Caption } //MyPropertyA public class MyPropertyB { private String caption = "B Default caption"; /** @property */ public String get_Caption() { return caption ; } //get_Caption } //MyPropertyB class MyPropertyInfo { public static void main(String[] args) { 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.get_Caption())); Console.Write(("\nMyPropertyB.Caption = " + myPropertyB.get_Caption())); // Write to the property. myPropertyA.set_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.get_Caption())); Console.Write(("\nMyPropertyB.Caption = " + myPropertyB.get_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 - " + System.Convert.ToString(myPropertyInfoA.get_CanWrite()))); Console.Write(("\nCanWrite B - " + System.Convert.ToString(myPropertyInfoB.get_CanWrite()))); } //main } //MyPropertyInfo
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 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


_PropertyInfo.CanWrite プロパティ
アセンブリ: mscorlib (mscorlib.dll 内)



Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- PropertyInfo.CanWriteのページへのリンク