在c#中的运行时向对象属性注入一个值

时间:2011-01-30 17:52:36

标签: c# code-injection

我有一个这样的课程:

public class ChildForm extends System.Windows.Forms.Form{
   public int childId;
}

我称之为:

Type baseType = Type.GetType("ChildForm");
System.Windows.Forms.Form formCall = (Form)System.Activator.CreateInstance(baseType);
//How can i set childId properties here?

ChildForm可以是多种形式,这就是为什么我需要使用反射并使用父窗体来显示它。但我不知道如何设置子属性。这可以通过属性注入来完成吗? 提前谢谢。

1 个答案:

答案 0 :(得分:3)

你所拥有的是field,而不是property。设置它的价值你可以这样做:

var baseType = Type.GetType("ChildForm");
System.Windows.Forms.Form formCall = (ChildForm)System.Activator.CreateInstance(baseType);
baseType.GetField("childId").SetValue(formCall, 5);