FieldInfo.SetValue Metod

Definition

Anger värdet för fältet för det angivna objektet till det angivna värdet.

Överlagringar

Name Description
SetValue(Object, Object)

Anger värdet för det fält som stöds av det angivna objektet.

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

När det åsidosättas i en härledd klass anger du värdet för det fält som stöds av det angivna objektet.

SetValue(Object, Object)

Anger värdet för det fält som stöds av det angivna objektet.

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);
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)

Parametrar

obj
Object

Objektet vars fältvärde ska anges.

value
Object

Värdet som ska tilldelas till fältet.

Implementeringar

Undantag

Anroparen har inte behörighet att komma åt det här fältet.

Obs! I .NET för Windows Store-appar eller Portable Class Library fångar du i stället basklassfelet MemberAccessException.

Parametern obj är null och fältet är ett instansfält.

Obs! I .NET för Windows Store-appar eller Portable Class Library fångar du Exception i stället.

Fältet finns inte på objektet.

-eller-

Parametern value kan inte konverteras och lagras i fältet.

Exempel

I följande exempel anges värdet för ett fält, hämtar och visar värdet, ändrar fältet och visar resultatet.

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".

Kommentarer

Den här metoden tilldelar value fältet som återspeglas av den här instansen på objektet obj. Om fältet är statiskt obj ignoreras det. För icke-statiska fält obj ska vara en instans av en klass som ärver eller deklarerar fältet. Det nya värdet skickas som en Object. Om fältets typ till exempel är boolesk skickas en instans av Object med lämpligt booleskt värde. Innan du anger värdet SetValue kontrollerar du om användaren har åtkomstbehörighet. Den här sista metoden är en bekvämlighetsmetod för att anropa följande SetValue metod.

Den här metoden kan inte användas för att ange värden för statiska, init-only (readonly i C#) fält på ett tillförlitligt sätt. I .NET versioner utlöses ett undantag om du försöker ange ett värde i ett statiskt, endast init-fält.

Note

Fullständigt betrodd kod har de behörigheter som krävs för att komma åt och anropa privata konstruktorer, metoder, fält och egenskaper med reflektion.

Note

Den här metoden kan användas för åtkomst till icke-offentliga medlemmar om anroparen har beviljats ReflectionPermission med ReflectionPermissionFlag.RestrictedMemberAccess flaggan och om bidragsuppsättningen för icke-offentliga medlemmar är begränsad till anroparens bidragsuppsättning eller en delmängd av den. (Se Säkerhetsöverväganden för reflektion.)

Om du vill använda den här funktionen bör ditt program rikta in sig på .NET Framework 3.5 eller senare.

Gäller för

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

När det åsidosättas i en härledd klass anger du värdet för det fält som stöds av det angivna objektet.

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);
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)

Parametrar

obj
Object

Objektet vars fältvärde ska anges.

value
Object

Värdet som ska tilldelas till fältet.

invokeAttr
BindingFlags

Ett fält som Binder anger vilken typ av bindning som önskas (till exempel Binder.CreateInstance eller Binder.ExactBinding).

binder
Binder

En uppsättning egenskaper som möjliggör bindning, tvång av argumenttyper och anrop av medlemmar genom reflektion. Om binder är nullanvänds .Binder.DefaultBinding

culture
CultureInfo

Programvaruinställningarna för en viss kultur.

Implementeringar

Undantag

Anroparen har inte behörighet att komma åt det här fältet.

Parametern obj är null och fältet är ett instansfält.

Fältet finns inte på objektet.

-eller-

Parametern value kan inte konverteras och lagras i fältet.

Kommentarer

Den här metoden tilldelar value fältet som återspeglas av den här instansen på obj. Om fältet är statiskt obj ignoreras det. För icke-statiska fält obj ska vara en instans av en klass som ärver eller deklarerar fältet. Det nya värdet skickas som en Object. Om fältets typ till exempel är Booleanskickas en instans av Object med lämpligt booleskt värde. Innan du anger värdet SetValue kontrollerar du om användaren har åtkomstbehörighet.

Den här metoden kan inte användas för att ange värden för statiska, init-only (readonly i C#) fält på ett tillförlitligt sätt. I .NET utlöses ett undantag om du försöker ange ett värde för ett statiskt, endast init-fält.

Note

Fullständigt betrodd kod har de behörigheter som krävs för att komma åt och anropa privata konstruktorer, metoder, fält och egenskaper med reflektion.

Note

Den här metoden kan användas för åtkomst till icke-offentliga medlemmar om anroparen har beviljats ReflectionPermission med ReflectionPermissionFlag.RestrictedMemberAccess flaggan och om bidragsuppsättningen för icke-offentliga medlemmar är begränsad till anroparens bidragsuppsättning eller en delmängd av den. (Se Säkerhetsöverväganden för reflektion.)

Gäller för