如何将Type转换成实例对象

问题描述

现在有一个类,如下:publicclassMyClass{publicstringdd="ddddd";privatestring_Name="myname";publicstringName{get{return_Name;}set{_Name=value;}}privateModel_Model=newModel();publicModelModel//这个是另外一个自定义类{get{return_Model;}set{_Model=value;}}}

MyClassobj=newMyClass();Typet=obj.GetType();System.Reflection.PropertyInfo[]properties=GetProperties(System.Reflection.BindingFlags.Instance|System.Reflection.BindingFlags.Public);

properties[1].ReflectedType这个是Model类型的,现在需要把这个的Type转换成Model类,不用动态创建,直接获得obj类里的Model属性实例,不能直接使用obj变量,只能用object

解决方案

本帖最后由 lsjwq 于 2015-03-18 17:21:29 编辑
解决方案二:
要用反射就一直用反射反射不是有Create方法创建对象吗如果到这里你突然想用Model类来承载这个object,那只能自己写一大堆分支,判断到底是什么类型的
解决方案三:
p.SetValue(obj,newModel())

解决方案四:
引用1楼Z65443344的回复:

要用反射就一直用反射反射不是有Create方法创建对象吗如果到这里你突然想用Model类来承载这个object,那只能自己写一大堆分支,判断到底是什么类型的

其实是想用Type类型,直接获得obj.Model实例对象,但是不能直接写obj.Model代码,说白了就是类似Modelm=((Model)((object)type))这样的过程。
解决方案五:
一般过程:Typet=object.GetType();现在要反向:objectobj=(object)t;,不能用动态创建,引用地址不能改变,原有对象值不变。
解决方案六:

解决方案七:
搞了半天dynamicmodel=newMyClass();mode.Model=obj.GetType只是获取Type,然后根据属性可以SetValue,并不会修改引用地址,因为你传入的就是obj自身
解决方案八:
引用6楼starfd的回复:

搞了半天dynamicmodel=newMyClass();mode.Model=obj.GetType只是获取Type,然后根据属性可以SetValue,并不会修改引用地址,因为你传入的就是obj自身

用SetValue,如果是值类型的对象没有问题,如果是引用类型的对象,引用地址是改变的。HashCode也不一样的。
解决方案九:
引用5楼sp1234的回复:不用动态创建的。无法保证当前对象值。

时间: 2024-09-20 18:35:36

如何将Type转换成实例对象的相关文章

hibernate jackson-带有对象属性的bean,如何转换成json对象或者字符串

问题描述 带有对象属性的bean,如何转换成json对象或者字符串 Accounts类 { ....属性 private Users user: //这个是一个User类.对应到数据库上是userid } 现在.我在action层.需要把得到的Accounts实例,转换成json格式. 出现问题:Accounts实例可以成功转换成json格式字符串.但是其中User的相关信息并没有得到.而且调试发现Accounts实例中是有User属性值的[我已经取消了懒加载].问题就出现了转换到json这块了

json对象与数组以及转换成js对象的简单实现方法_javascript技巧

JSON 语法规则 JSON 语法是 JavaScript 对象表示法语法的子集. •数据在名称/值对中 •数据由逗号分隔 •花括号保存对象 •方括号保存数组 JSON 对象 JSON 对象在花括号中书写: 对象可以包含多个名称/值对: { "firstName":"John" , "lastName":"Doe" } 这一点也容易理解,与这条 JavaScript 语句等价: firstName = "John&q

java-Java 未知格式日期字符串如何转换成日期对象

问题描述 Java 未知格式日期字符串如何转换成日期对象 5C 如题,一种未知的日期格式的字符串如何转换为日期对象如值可能是 2015-02-06T03:57:23+00:002014-10-20 03:24:32.0638th Apr 2015 02:276/13/2015 5:47 PM 等等常规的世界日期格式,如何转成日期对象 解决方案 只能把可能的格式都列上,然后一个一个匹配,匹配上的就转换,没有匹配上的不转换. 解决方案二: 只能用正则表达式依次匹配,然后再调用对应的格式解析. 解决方

java-像下面这样复杂格式的Json,用JSON-lib或者Gson怎么转换成Java对象,求好心人指教

问题描述 像下面这样复杂格式的Json,用JSON-lib或者Gson怎么转换成Java对象,求好心人指教 { "facets":{}, "hits":{ "hits":[ {"_source": {"author":"侯振清%刘洋%王鑫娟%张其清","ffund":"厦门大学基金","firstauthor":"侯振

将JSON字符串转换成Map对象的方法_javascript技巧

页面向后台action传递一个json字符串,需要将json字符串转换成Map对象 public Map<String, String> toMap(Object object) { Map<String, String> data = new HashMap<String, String>(); // 将json字符串转换成jsonObject JSONObject jsonObject = JSONObject.fromObject(object); Iterato

使用JSON.parse将json字符串转换成json对象的时候会出错_javascript技巧

在对数据库取出来的数据(特别是描述信息)里面含有特殊字符的话,使用JSON.parse将json字符串转换成json对象的时候会出错,主要是双引号,回车换行等影响明显,左尖括号和右尖括号也会导致显示问题,所以要在输出到页面进行json对象转换之前将一些特殊符合进行编码或转义,下面展示的是C#代码编码和转义几个常用特殊字符.经过笔者测试,将这些符号编码和转义之后,大部分json字符串都可以转换成json对象了.如果遇到个别问题,应朝着这个方向去查找问题. theString = theString

把json格式的字符串转换成javascript对象或数组的方法总结_javascript技巧

第一种 JSON.parse(jsonString) 第二种 eval("("+jsonString+")") 第三种 var obj=(function ToJSON(o){ if(typeof(o)=="string")try{return new Function("return "+o)();}catch(e){return null;} })("[{name:'zhangsan',age:'24'},{na

jquery 将dom对像转换成数组对象

jquery 将dom对像转换成数组对象 1.jQuery对象(this指向)其实就是一个键值对数据集合,一张普通的hashTabel.集合中,自定义键名可以是字母,也可以是整数,索引方式{name1: "value1", name2: "value2"}[name2]与{0: "value1", 1: "value2"}[1]不存在任何差异,后者数据结构与数组(Array)没有任何关系,那来的"[document]

如何把ResultSet转换成Java对象

    有时候我们不想使用任何框架,但又需要用JDBC实现类似于iBATIS的orm映射功能,把一个ResultSet转换成我们的JavaBeans,我们可以模仿iBATIS的方式自己写一个ResultSetMapper实现类,利用反射原理把ResultSet转换成一个JavaBeans,下面是网上的一个开源实现,主要用到的是注解和反射机制,我们先看一下使用效果: package com.heaven.mapper; import java.sql.Connection; import java