c# 将object 转换成真实类型

publicvoidf1(objectobj){//这里如何将obj转换成实际类型}publicstaticvoidmain(){objecta=newA();f1(a)... public void f1(object obj){
//这里如何将 obj转换成实际类型
}
public static void main(){
object a=new A();
f1(a);
object b=new B();
f1(b);
}
展开
 我来答
小星星教育知识分享
高粉答主

2019-12-08 · 用教师的智慧点燃学生的智慧火花
小星星教育知识分享
采纳数:202 获赞数:67136

向TA提问 私信TA
展开全部

///<summary>

///将object对象转换为实体对象

///</summary>

///<typeparamname="T">实体对象类名</typeparam>

///<paramname="asObject">object对象</param>

///<returns></returns>

privateTConvertObject<T>(objectasObject)whereT:new()

{

//创建实体对象实例

vart=Activator.CreateInstance<T>();

if(asObject!=null)

{

Typetype=asObject.GetType();

//遍历实体对象属性

foreach(varinfointypeof(T).GetProperties())

{

objectobj=null;

//取得object对象中此属性的值

varval=type.GetProperty(info.Name)?.GetValue(asObject);

if(val!=null)

{

//非泛型

if(!info.PropertyType.IsGenericType)

obj=Convert.ChangeType(val,info.PropertyType);

else//泛型Nullable<>

{

TypegenericTypeDefinition=info.PropertyType.GetGenericTypeDefinition();

if(genericTypeDefinition==typeof(Nullable<>))

{

obj=Convert.ChangeType(val,Nullable.GetUnderlyingType(info.PropertyType));

}

else

{

obj=Convert.ChangeType(val,info.PropertyType);

}

}

info.SetValue(t,obj,null);

}

}

}

returnt;

}

#endregion

扩展资料

C#反射遍历对象所有属性

[TestMethod]

publicvoidTest6()

{

List<RepaymentRecord>repaymentList=newList<RepaymentRecord>();

StringBuildermsg=newStringBuilder();

RepaymentRecordentity=newRepaymentRecord();

entity.Month1="100";

entity.Month18="900";

entity.Month24="322";

foreach(PropertyInfopinentity.GetType().GetProperties())

{

msg.AppendFormat("{0},{1}",p.Name,p.GetValue(entity));

}

varresult=msg;

Assert.IsNotNull(result);

}

latentguling
2012-02-01 · TA获得超过326个赞
知道小有建树答主
回答量:636
采纳率:0%
帮助的人:530万
展开全部
object value;
1.强转,用于你知道目标是什么类别,只是传递参数的时候,由于某些原因变成了object而已
Abc a = (Abc)value;
2.AS,这个只能用于可引用类型,就是class类型,如果是struct是不允许的,因为struct不能设置为null,这个方式的效果就是,如果能转成指定类型,就会转换成功,反之得到的是null
Abc a = value as Abc;
实际这个语法的内部作法是:
if (value is Abc){
return (Abc)value;
}else{
return null;
}
3.一些系统基础类型可以用Convert进行操作,另外还可以用Convert.ChangeType(value,type);
其中type是你的目标类型,如:Convert.ChangeType(value,typeof(Abc));
这里用到的 typeof 是为了得到 目标的Type

QQ:254186917
群1:14895358
群2:112481823
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ljqling
推荐于2017-06-01 · TA获得超过797个赞
知道小有建树答主
回答量:391
采纳率:0%
帮助的人:428万
展开全部
public void f1(object obj)
{
A a=obj as A;
if(a!=null)
{
//do sth.
}
//others
}
不过最好不要这样做,用抽象类,逻辑清晰,不要这样一个个判断和转换,性能也有明显提升。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7cb8fc542
2012-02-01 · TA获得超过298个赞
知道小有建树答主
回答量:329
采纳率:0%
帮助的人:285万
展开全部
如何进行强制转换
转换成int: Convert.ToINT32(aaa);
转换成string:aaa.ToString();
转换成日期时间:Convert.ToDateTime(xxx);
转换成double:Convert.ToDouble(xxx);
如果你自定义了一个类,(ˇˍˇ) 想~转换为该对象,若该类名为(linkclass)
转换方式为 a = (linkclass)xxx;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-02-01
展开全部
A aa=a as A或(A)a;
B bb=b as B或(B)b;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式