FieldInfo.SetValue Yöntem

Tanım

Verilen nesne için alanın değerini verilen değere ayarlar.

Aşırı Yüklemeler

SetValue(Object, Object)

Verilen nesne tarafından desteklenen alanın değerini ayarlar.

SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

Türetilmiş bir sınıfta geçersiz kılındığında, verilen nesne tarafından desteklenen alanın değerini ayarlar.

SetValue(Object, Object)

Kaynak:
FieldInfo.cs
Kaynak:
FieldInfo.cs
Kaynak:
FieldInfo.cs

Verilen nesne tarafından desteklenen alanın değerini ayarlar.

public:
 virtual void SetValue(System::Object ^ obj, System::Object ^ value);
public:
 void SetValue(System::Object ^ obj, System::Object ^ value);
public virtual void SetValue (object obj, object value);
public void SetValue (object? obj, object? value);
public void SetValue (object obj, object value);
abstract member SetValue : obj * obj -> unit
override this.SetValue : obj * obj -> unit
member this.SetValue : obj * obj -> unit
Public Overridable Sub SetValue (obj As Object, value As Object)
Public Sub SetValue (obj As Object, value As Object)

Parametreler

obj
Object

Alan değeri ayarlanacak nesne.

value
Object

Alana atanacak değer.

Uygulamalar

Özel durumlar

Çağıranın bu alana erişme izni yok.

Not: Windows Mağazası uygulamaları için .NET'te veya Taşınabilir Sınıf Kitaplığı'nda bunun yerine temel sınıf özel durumunu MemberAccessExceptionyakalayın.

obj parametresi ve null alanı bir örnek alanıdır.

Not: Windows Mağazası uygulamaları için .NET'te veya Taşınabilir Sınıf Kitaplığı'nda bunun yerine yakalayın Exception .

Alan nesnede yok.

-veya-

value parametre dönüştürülemez ve alanda depolanamaz.

Örnekler

Aşağıdaki örnek bir alanın değerini ayarlar, değeri alır ve görüntüler, alanı değiştirir ve sonucu görüntüler.

using namespace System;
using namespace System::Reflection;
using namespace System::Globalization;

public ref class Example
{
private:
   String^ myString;

public:
   Example()
   {
      myString = "Old value";
   }

   property String^ StringProperty 
   {
      String^ get()
      {
         return myString;
      }
   }
};

int main()
{
    Example^ myObject = gcnew Example;
    Type^ myType = Example::typeid;
    FieldInfo^ myFieldInfo = myType->GetField( "myString", 
        BindingFlags::NonPublic | BindingFlags::Instance);
      
    // Display the string before applying SetValue to the field.
    Console::WriteLine( "\nThe field value of myString is \"{0}\".", 
        myFieldInfo->GetValue( myObject ) );
    // Display the SetValue signature used to set the value of a field.
    Console::WriteLine( "Applying SetValue(Object, Object)." );

    // Change the field value using the SetValue method. 
    myFieldInfo->SetValue( myObject, "New value" );     
    // Display the string after applying SetValue to the field.
    Console::WriteLine( "The field value of mystring is \"{0}\".", 
        myFieldInfo->GetValue(myObject));
}
/* This code produces the following output:

The field value of myString is "Old value".
Applying SetValue(Object, Object).
The field value of mystring is "New value".
 */
using System;
using System.Reflection;
using System.Globalization;

public class Example
{
    private string myString;
    public Example()
    {
        myString = "Old value";
    }

    public string StringProperty
    {
        get
        {
            return myString;
        }
    }
}

public class FieldInfo_SetValue
{
    public static void Main()
    {
        Example myObject = new Example();
        Type myType = typeof(Example);
        FieldInfo myFieldInfo = myType.GetField("myString",
            BindingFlags.NonPublic | BindingFlags.Instance);

        // Display the string before applying SetValue to the field.
        Console.WriteLine( "\nThe field value of myString is \"{0}\".",
        myFieldInfo.GetValue(myObject));
        // Display the SetValue signature used to set the value of a field.
        Console.WriteLine( "Applying SetValue(Object, Object).");

        // Change the field value using the SetValue method.
        myFieldInfo.SetValue(myObject, "New value");
        // Display the string after applying SetValue to the field.
        Console.WriteLine( "The field value of mystring is \"{0}\".",
            myFieldInfo.GetValue(myObject));
    }
}

/* This code example produces the following output:

The field value of myString is "Old value".
Applying SetValue(Object, Object).
The field value of mystring is "New value".
 */
Imports System.Reflection
Imports System.Globalization

Public Class Example
   Private myString As String
   
   Public Sub New()
      myString = "Old value"
   End Sub 
   
   ReadOnly Property StringProperty() As String
      Get
         Return myString
      End Get
   End Property
End Class 


Public Module FieldInfo_SetValue
   
   Sub Main()

        Dim myObject As New Example()
        Dim myType As Type = GetType(Example)
        Dim myFieldInfo As FieldInfo = myType.GetField("myString", _
           BindingFlags.NonPublic Or BindingFlags.Instance)

        ' Display the string before applying SetValue to the field.
        Console.WriteLine(vbCrLf & "The field value of myString is ""{0}"".", _
            myFieldInfo.GetValue(myObject))
        ' Display the SetValue signature used to set the value of a field.
        Console.WriteLine("Applying SetValue(Object, Object).")

        ' Change the field value using the SetValue method. 
        myFieldInfo.SetValue(myObject, "New value")
        ' Display the string after applying SetValue to the field.
        Console.WriteLine("The field value of mystring is ""{0}"".", _
            myFieldInfo.GetValue(myObject))

    End Sub 
End Module

' This code example produces the following output:
' The field value of myString is "Old value".
' Applying SetValue(Object, Object).
' The field value of mystring is "New value".

Açıklamalar

Bu yöntem, nesnesinde objbu örnek tarafından yansıtılan alana atarvalue. Alan statikse yoksayılır obj . Statik olmayan alanlar için, obj alanı devralan veya bildiren bir sınıfın örneği olmalıdır. Yeni değer olarak Objectgeçirilir. Örneğin, alanın türü Boole ise, uygun Boole değerine sahip bir örneği Object geçirilir. Değeri ayarlamadan önce kullanıcının SetValue erişim izni olup olmadığını denetler. Bu son yöntem, aşağıdaki SetValue yöntemi çağırmak için kullanışlı bir yöntemdir.

Bu yöntem, statik, yalnızca başlatma (readonly C#'de) alanlarının değerlerini güvenilir bir şekilde ayarlamak için kullanılamaz. .NET Core 3.0 ve sonraki sürümlerinde, yalnızca statik bir alanda değer ayarlamaya çalışırsanız bir özel durum oluşturulur.

Not

Tam olarak güvenilen kod, yansıma kullanarak özel oluşturuculara, yöntemlere, alanlara ve özelliklere erişmek ve çağırmak için gereken izinlere sahiptir.

Not

.NET Framework 2.0 Service Pack 1'den başlayarak, çağıranın bayrağıyla verilmiş ReflectionPermission olması ve ortak olmayan üyelerin izin kümesinin çağıranın verme kümesiyle veya bunun bir alt kümesiyle ReflectionPermissionFlag.RestrictedMemberAccess sınırlı olması durumunda bu yöntem genel olmayan üyelere erişmek için kullanılabilir. (Bkz. Yansıma için GüvenlikLe İlgili Dikkat Edilmesi Gerekenler.)

Bu işlevselliği kullanmak için uygulamanızın .NET Framework 3.5 veya sonraki bir sürümü hedeflemesi gerekir.

Şunlara uygulanır

SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

Kaynak:
FieldInfo.cs
Kaynak:
FieldInfo.cs
Kaynak:
FieldInfo.cs

Türetilmiş bir sınıfta geçersiz kılındığında, verilen nesne tarafından desteklenen alanın değerini ayarlar.

public:
 abstract void SetValue(System::Object ^ obj, System::Object ^ value, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, System::Globalization::CultureInfo ^ culture);
public abstract void SetValue (object? obj, object? value, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, System.Globalization.CultureInfo? culture);
public abstract void SetValue (object obj, object value, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Globalization.CultureInfo culture);
abstract member SetValue : obj * obj * System.Reflection.BindingFlags * System.Reflection.Binder * System.Globalization.CultureInfo -> unit
Public MustOverride Sub SetValue (obj As Object, value As Object, invokeAttr As BindingFlags, binder As Binder, culture As CultureInfo)

Parametreler

obj
Object

Alan değeri ayarlanacak nesne.

value
Object

Alana atanacak değer.

invokeAttr
BindingFlags

İstenen bağlama türünü belirten bir alanı Binder (örneğin, Binder.CreateInstance veya Binder.ExactBinding).

binder
Binder

Bağlamayı, bağımsız değişken türlerini zorlamayı ve yansıma aracılığıyla üyelerin çağrılmasına olanak tanıyan bir özellik kümesi. ise bindernullBinder.DefaultBinding kullanılır.

culture
CultureInfo

Belirli bir kültürün yazılım tercihleri.

Uygulamalar

Özel durumlar

Çağıranın bu alana erişme izni yok.

obj parametresi ve null alanı bir örnek alanıdır.

Alan nesnede yok.

-veya-

value parametre dönüştürülemez ve alanda depolanamaz.

Açıklamalar

Bu yöntem, üzerinde bu örnek objtarafından yansıtılan alana atarvalue. Alan statikse yoksayılır obj . Statik olmayan alanlar için, obj alanı devralan veya bildiren bir sınıfın örneği olmalıdır. Yeni değer olarak Objectgeçirilir. Örneğin, alanın türü ise Boolean, uygun Boole değerine sahip bir örneği Object geçirilir. Değeri ayarlamadan önce kullanıcının SetValue erişim izni olup olmadığını denetler.

Bu yöntem, statik, yalnızca başlatma (readonly C#'de) alanlarının değerlerini güvenilir bir şekilde ayarlamak için kullanılamaz. .NET Core 3.0 ve sonraki sürümlerinde, yalnızca statik bir alanda değer ayarlamaya çalışırsanız bir özel durum oluşturulur.

Not

Tam olarak güvenilen kod, yansıma kullanarak özel oluşturuculara, yöntemlere, alanlara ve özelliklere erişmek ve çağırmak için gereken izinlere sahiptir.

Not

.NET Framework 2.0 Service Pack 1'den başlayarak, çağıranın bayrağıyla verilmiş ReflectionPermission olması ve ortak olmayan üyelerin izin kümesinin çağıranın verme kümesiyle veya bunun bir alt kümesiyle ReflectionPermissionFlag.RestrictedMemberAccess sınırlı olması durumunda bu yöntem genel olmayan üyelere erişmek için kullanılabilir. (Bkz. Yansıma için GüvenlikLe İlgili Dikkat Edilmesi Gerekenler.)

Bu işlevselliği kullanmak için uygulamanızın .NET Framework 3.5 veya sonraki bir sürümü hedeflemesi gerekir.

Şunlara uygulanır