を作成してMDI form
おり、さまざまなフォームをロードするメソッドがあります。次に、少し変更を加える必要があります。ある子フォームを別の子フォーム内から呼び出す機能を追加する必要があります。
いくつかの異なる場所でこれが必要なので、この機能を必要とするすべてのクラスが継承する新しいクラスを作成しました。ジェネリック型で機能させたいので、必要なフォームクラスなどをすべて渡すことができます。最終結果として何が欲しいLoadAForm(MyForm1)
かLoadAForm(MyForm2)
が明確になることを願っています。
私はこれを試しました:
protected void LoadAForm<T>(ref T sender)
{
MainForm frm = this.MdiParent as MainForm;
T temp;
if (frm != null)
{
sender = SingletonFormProvider.GetInstance<temp>(frm, true);
sender.MdiParent = frm;
sender.Dock = DockStyle.Fill;
sender.Show();
}
}
これは機能しません。しかし、ジェネリックがメソッドで使用されている場合は、ジェネリックの経験がほとんどないため、どうすればよいかわかりません。
この構文を使用してエラーとして表示されるのは、The type or namespace "temp" could not be found...". I'm not even sure that this is the way to do it.
GetInstance<>` は呼び出しているフォームの型と同じ型の引数を取る必要があるということです。