Freigeben über


PropertyInfo.CanWrite-Eigenschaft

Ruft einen Wert ab, der angibt, ob in die Eigenschaft geschrieben werden kann.

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

Syntax

'Declaration
Public MustOverride ReadOnly Property CanWrite As Boolean
'Usage
Dim instance As PropertyInfo
Dim value As Boolean

value = instance.CanWrite
public abstract bool CanWrite { get; }
public:
virtual property bool CanWrite {
    bool get () abstract;
}
/** @property */
public abstract boolean get_CanWrite ()
public abstract function get CanWrite () : boolean

Eigenschaftenwert

true, wenn in diese Eigenschaft geschrieben werden kann, andernfalls false.

Hinweise

Wenn die Eigenschaft über keinen set-Accessor verfügt, kann nicht in sie geschrieben werden.

Um die CanWrite-Eigenschaft abzurufen, rufen Sie zunächst den Type der Klasse ab. Über Type rufen Sie PropertyInfo ab. Aus PropertyInfo rufen Sie den CanWrite-Wert ab.

Beispiel

Im folgenden Beispiel werden zwei Eigenschaften definiert. Die erste Eigenschaft ist schreibbar, daher ist die CanWrite-Eigenschaft true. Die zweite Eigenschaft ist nicht schreibbar (es ist kein set-Accessor vorhanden), und die CanWrite-Eigenschaft ist daher 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
*/

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

PropertyInfo-Klasse
PropertyInfo-Member
System.Reflection-Namespace