簡単に移動して編集できない既存のコードのロジックをテストしていますが、コードが存在するオブジェクトには、何らかの理由でnullである50以上のオブジェクトが含まれています。私が探しているのは、テストコードから、リフレクションを使用して、テストしているクラスのすべての内部オブジェクトを調べ、そのオブジェクトがnullの場合は、インスタンス化することです。これは私がこれまでに持っているものです:
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に戻ってくることです。ucApproved.Controls[0] = control
次に、インスタンス化されたコントロールを取得すると、ControlCollectionが読み取り専用であるために設定できないため、その値をucApprovedオブジェクトに戻す方法がわかりません。