zoukankan      html  css  js  c++  java
  • MSDN_FieldInfo.SetValue

    FieldInfo.SetValue 方法 (Object, Object)

    设置给定对象支持的字段值。

    命名空间: System.Reflection
    程序集: mscorlib(在 mscorlib.dll 中)

    语法


    复制
    public void SetValue(
    	Object obj,
    	Object value
    )
    

    参数

    obj
    类型:System.Object
    将设置其字段值的对象。
    value
    类型:System.Object
    分配给字段的值。

    实现

    _FieldInfo.SetValue(Object, Object)

    异常


    异常条件
    FieldAccessException

    调用方没有访问此字段的权限。

    TargetException

    obj 参数为 null 并且该字段是一个实例字段。

    ArgumentException

    对象上不存在该字段。

    - 或 -

    value 参数无法转换并存储在该字段中。

    备注


    此方法将 value 分配给此实例在 obj 对象上反映的字段。如果该字段是静态的,则将忽略 obj。对于非静态字段,obj 应是继承或声明该字段的类的实例。新值作为 Object 传递。例如,如果字段的类型为 Boolean,则传递带有相应 Boolean 值的 Object 的实例。在设置该值以前,SetValue 将检查用户是否有访问权限。此最终方法对于调用下列 SetValue 方法很方便。

    注意注意

    完全受信任的代码具有使用反射来访问和调用私有构造函数、方法、字段和属性所需的权限。

    注意注意

    从 .NET Framework 2.0 版 Service Pack 1 开始,如果已授予调用方带有 ReflectionPermissionFlag.RestrictedMemberAccess 标志的 ReflectionPermission,并且非公共成员的授予集限制为调用方的授予集或其子集,则此方法可用于访问非公共成员。(请参见 反射的安全注意事项。)

    若要使用此功能,您的应用程序应面向 .NET Framework 3.5 版 或更高版本。

    示例


    下面的示例将设置一个字段的值,获取并显示该值,然后修改该字段并显示结果。

    复制
     1 using System;
     2 using System.Reflection;
     3 using System.Globalization;
     4 
     5 public class Example
     6 {
     7     private string myString;
     8     public Example()
     9     {
    10         myString = "Old value";
    11     }
    12 
    13     public string StringProperty
    14     {
    15         get
    16         {
    17             return myString;
    18         }
    19     }
    20 }
    21 
    22 public class FieldInfo_SetValue
    23 {
    24     public static void Main()
    25     {
    26         Example myObject = new Example();
    27         Type myType = typeof(Example);
    28         FieldInfo myFieldInfo = myType.GetField("myString", 
    29             BindingFlags.NonPublic | BindingFlags.Instance); 
    30 
    31         // Display the string before applying SetValue to the field.
    32         Console.WriteLine( "
    The field value of myString is "{0}".", 
    33         myFieldInfo.GetValue(myObject)); 
    34         // Display the SetValue signature used to set the value of a field.
    35         Console.WriteLine( "Applying SetValue(Object, Object)."); 
    36 
    37         // Change the field value using the SetValue method. 
    38         myFieldInfo.SetValue(myObject, "New value"); 
    39         // Display the string after applying SetValue to the field.
    40         Console.WriteLine( "The field value of mystring is "{0}".", 
    41             myFieldInfo.GetValue(myObject));
    42     }
    43 }
    44 
    45 /* This code example produces the following output:
    46 
    47 The field value of myString is "Old value".
    48 Applying SetValue(Object, Object).
    49 The field value of mystring is "New value".
    50  */

    版本信息


    .NET Framework

    受以下版本支持:4、3.5、3.0、2.0、1.1、1.0

    .NET Framework Client Profile

    受以下版本支持:4、3.5 SP1

     

    受以下版本支持:

    .NET Framework 安全性


    平台


    Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2

    .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求
  • 相关阅读:
    扩展正则表达式 练习题
    Linux特殊符号
    文件属性下
    文件属性和ls -lhi
    复习之前的和补充一些内容
    第二关练习题总结完结
    云服务器防ssh攻击
    实验四+085
    实验3+085
    第5次作业+085
  • 原文地址:https://www.cnblogs.com/managersi/p/4072060.html
Copyright © 2011-2022 走看看