MSDN_FieldInfo.SetValue

FieldInfo.SetValue 方法 (Object, Object)

.NET Framework 4

其他版本

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

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

语法


C#

C++

F#

VB

复制

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 版 或更高版本。

示例


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

C#

C++

VB

复制

 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( "\nThe 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 系统要求

请参见


参考

FieldInfo 类

SetValue 重载

System.Reflection 命名空间

时间: 2024-11-19 07:07:39

MSDN_FieldInfo.SetValue的相关文章

setValue 和 setObject 的区别

在使用NSMutableDictionary 的时候经常会使用setValue forKey 与 setObject forKey,他们经常是可以交互使用的. 1.setValue forKey的定义 @interface NSMutableDictionary(NSKeyValueCoding) /* Send -setObject:forKey: to the receiver, unless the value is nil, in which case send -removeObjec

KVC - (void)setValue:(nullable id)value forKey:(NSString *)key;

关于KVC的方法 - (void)setValue:(nullable id)value forKey:(NSString *)key; 从上面的参数类型可以看出,value必须是一个对象,可以为nil对象. 当你的属性是@property (nonatomic, assign) NSInteger testNum; 则在使用KVC时,必须将其转换成NSNumber对象,或NSString对象.但不能转换成数组等其他对象类型. [self setValue:@99 forKey:@"testNu

字典 setValue和 setObject的不同

注意:setObject:forKey:中Key的对象是一个id类型,并不是NSString,只不过我们经常使用NSString而已. 1, setObject:forkey:中value是不能够为nil的,不然会报错. setValue:forKey:中value能够为nil,但是当value为nil的时候,会自动调用removeObject:forKey方法 2, setValue:forKey:中key的参数只能够是NSString类型,而setObject:forKey:的可以是任何类型

setValue和setObject的区别

在使用NSMutableDictionary的时候经常会使用setValue forKey与setObject forKey,他们经常是可以交互使用的,代码中经常每一种的使用都有. 1,先看看setValue: forKey:的定义 @interface NSMutableDictionary(NSKeyValueCoding) /* Send -setObject:forKey: to the receiver, unless the value is nil, in which case s

iOS.KVC.setValue:forKey:

Foundation Framework 定义了 NSObject(NSKeyValueCoding), - (void)setValue:(id)value forKey:(NSString *)key; 该接口的说明 1. 先在message receiver的class中搜索方法 -set<Key>: 2. 如果1中未找到,则在class中以此搜索 _<key>, _is<key>, <key>, is<Key> 实例变量 3. 如果2中未

storyboard下 setValue:forUndefinedKey:异常问题

如果没有显式的使用键值编码而出现此问题,通过查看程序基本不能发现问题所在,则有可能是storyboard中的某viewController复制于其他viewController,而相应的IBOutlet和IBAction没有进行修改,xib下同样有可能. storyboard下 setValue:forUndefinedKey:异常问题,布布扣,bubuko.com

[转]setValue和setObject的区别

在使用NSMutableDictionary的时候经常会使用setValue forKey与setObject forKey,他们经常是可以交互使用的,代码中经常每一种的使用都有. 1,先看看setValue: forKey:的定义 @interface NSMutableDictionary(NSKeyValueCoding) /* Send -setObject:forKey: to the receiver, unless the value is nil, in which case s

KVC与setValue:forUndefinedKey:方法

在实际开发及应用过程中,经常会遇到通过外部数据构造的字典的键要多于自定义数据模型中属性的个数的情况. 例如:从外部获得JSON格式的数据包含5个键,如下所示: { "cityname" : "beijing", "state1" : "0", "state2" : "1", "tem1" : "25", "tem2" : &qu

easyui textbox setvalue 和 settext前后之别

今天在这里转了好久,浪费了不少时间.话不多说直接上干货: 1.text与value设置不同的值一定要先赋值 value后赋值text, 否则全为value值 2.若只setValue,则getValue 与 getText获取的值全为value值 原来这两个方法还要分前后! 感谢:http://blog.csdn.net/qq_27194467/article/details/52367731