java读取属性文件:C#反射技术的一读取和设置类的属性来源: 发布时间:星期五, 2009年1月9日 浏览:9次 评论:0
要用C#反射技术话首先得引入.Reflection 命名空间这个命名空间里类具有动态加载集、类型动态思路方法、设置和取得属性和字段值、可以获取类型和思路方法信息功能
要想对个类型例子属性或字段进行动态赋值或取值首先得得到这个例子或类型Type,微软已经为我们提供了足够多思路方法 1ClassMyClass 如果有个这个类型例子: MyClass myObj = MyClass; 我们要动态为这个例子属性Field赋值那么得先得到这个例子类型: Typet=typeof(MyClass);另种思路方法是: Typet=myObj.GetType;只要我们得到了对象类型那么我们就可以利用反射对这个对象“为所欲为”了哈哈 t.GetProperty("Field").SetValue(myObj,1,null);这样我们就为对象里属性Field赋值了如果把属性名和要赋值写道配置文件里话我们就可以达到运行期间动态为属性赋值了 利用反射获取属性值思路方法: propValue=Convert.ToInt32(t.GetProperty("Field").SetValue(myObj,null));好了有关利用反射动态为对象属性赋值取值就到这里了 (C#)利用反射动态类成员 使用反射动态类成员需要Type类个思路方法:InvokeMember对该思路方法声明如下: public object InvokeMember( 参数 name String它包含要构造、思路方法、属性或字段成员名称 - 或 - 空串 ("")表示默认成员 invokeAttr 个位屏蔽由个或多个指定搜索执行方式 BindingFlags 组成访问可以是 BindingFlags 的如 Public、NonPublic、Private、InvokeMethod 和 GetField 等不需要指定查找类型如果省略查找类型则将应用 BindingFlags.Public | BindingFlags.Instance binder 个 Binder 对象该对象定义组属性并启用绑定而绑定可能涉及选择重载思路方法、强制参数类型和通过反射成员 - 或 - 若为空引用(Visual Basic 中为 Nothing)则使用 DefaultBinder target 要在其上指定成员 Object args 包含传递给要成员参数 返回值 表示被成员返回值 Object 备注: 下列 BindingFlags 筛选标志可用于定义包含在搜索中成员: 为了获取返回值必须指定 BindingFlags.Instance 或 BindingFlags.Static 指定 BindingFlags.Public 可在搜索中包含公共成员 指定 BindingFlags.NonPublic 可在搜索中包含非公共成员(即私有成员和受保护成员) 指定 BindingFlags.FlattenHierarchy 可包含层次结构上静态成员 下列 BindingFlags 修饰符标志可用于更改搜索执行方式: BindingFlags.IgnoreCase表示忽略 name 大小写 BindingFlags.DeclaredOnly仅搜索 Type 上声明成员而不搜索被简单继承成员 可以使用下列 BindingFlags 标志表示要对成员采取操作: CreateInstance表示构造忽略 name对其他标志无效 InvokeMethod表示思路方法而不构造或类型值设定项对 SetField 或 SetProperty 无效 GetField表示获取字段值对 SetField 无效 SetField表示设置字段值对 GetField 无效 GetProperty表示获取属性对 SetProperty 无效 SetProperty 表示设置属性对 GetProperty 无效 下面通过例题对该思路方法进行简单应用(我直以为要让例题起到更容易理解文字意义和作用撰写例题越简单越直观越好) using ; 0
相关文章读者评论发表评论 |
|