我正在测试无法轻松编辑的预先存在的代码中的逻辑,但是代码所在的对象内部有 50 多个对象,无论出于何种原因,这些对象都为空。我要做的是:从我的测试代码中,使用反射,遍历我正在测试的类的所有内部对象,如果所述对象为空,则实例化它。这是我迄今为止所拥有的:
Type ucApprovedType = ucApproved.GetType();
System.Reflection.FieldInfo[] fieldInfo = ucApprovedType.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
foreach (System.Reflection.FieldInfo ucFieldInfo in fieldInfo)
{
Control control = ucApproved.FindControl(ucFieldInfo.Name);
if (control == null)
control = new Control();
//Set instantiated control back to ucApproved item
}
我在上面遇到的第一个问题是控件从 FindControl(ucFieldInfo.Name) 调用返回 null。然后,一旦我拥有了 instatiated 控件,我不知道如何将它的值设置回 ucApproved 对象,因为我不能这样做,ucApproved.Controls[0] = control
因为 ControlCollection 是只读的。