如何创建类的实例并从像Session这样的Bag对象设置属性

时间:2012-10-24 14:09:40

标签: c# reflection system.reflection viewbag activator

该类将在runtime中声明,values存储在Bag对象中,如sessionViewBag。现在我想创建一个类的实例,并使用Bag数据设置它的属性。我知道我应该使用reflection,但我不知道是否有任何方法开箱即用执行此类操作,或者我应该创建一个

session["Foo"] = "foo";
session["Bar"] = "bar";

var instance = System.Activator.CreateInstance(Type.GetType(className));

instance = ? // how to set properties using session

该类在设计时间不可用,应用程序不知道它的属性是什么。

2 个答案:

答案 0 :(得分:5)

Type myType = Type.GetType(className);
var instance = System.Activator.CreateInstance(myType);
PropertyInfo[] properties = myType.GetProperties();

foreach (var property in properties)
{
    property.SetValue(instance, session[property.Name], null);
}

答案 1 :(得分:0)

ThaT&#S; S完美地工作,ssee up 输入myType = Type.GetType(className);

var instance = System.Activator.CreateInstance(myType);
PropertyInfo[] properties = myType.GetProperties();

foreach (var property in properties)
{
    property.SetValue(instance, session[property.Name], null);
}