该类将在runtime
中声明,values
存储在Bag
对象中,如session
或ViewBag
。现在我想创建一个类的实例,并使用Bag数据设置它的属性。我知道我应该使用reflection
,但我不知道是否有任何方法开箱即用执行此类操作,或者我应该创建一个?
session["Foo"] = "foo";
session["Bar"] = "bar";
var instance = System.Activator.CreateInstance(Type.GetType(className));
instance = ? // how to set properties using session
该类在设计时间不可用,应用程序不知道它的属性是什么。
答案 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);
}