Anda dapat menggunakan bentuk generik di C#?

Anda harus dapat membuat suatu bentuk generik:

public partial class MyGenericForm<T> :
    Form where T : class
{
    /* form code */
    public List<T> TypedList { get; set; }
}

Ini berlaku C#, dan menyusun. Namun desainer won't bekerja dan bentuk akan melempar pengecualian runtime jika anda memiliki gambar yang menyatakan bahwa hal itu tidak dapat menemukan sumber daya.

Saya pikir ini adalah karena windows forms designer mengasumsikan bahwa sumber daya yang akan disimpan di bawah tipe sederhana's nama.

Larutan

Ya, anda bisa! Berikut ini's blog post yang saya buat beberapa waktu yang lalu dengan trik ini:

Merancang Bentuk Generik

Edit: Sepertinya anda're sudah melakukannya dengan cara ini. Metode ini bekerja baik-baik saja jadi saya tidak't menganggap itu terlalu hacky.

Komentar (1)

Aku punya hack untuk solusi ini, yang bekerja tetapi isn't ideal:

Tambahkan sebuah class baru untuk proyek yang mewarisi bentuk dengan nama sederhana.

internal class MyGenericForm:
    MyGenericForm { }

Ini berarti bahwa meskipun desainer masih salah yang diharapkan tipe sederhana (saya.e tanpa <>) masih ditemukan.

Komentar (0)

Anda dapat melakukannya dalam tiga langkah.

  1. Ganti di Form1.cs File
public partial class Form1 : Formbase // where....
  1. Ganti di Form1.Desainer.cs
 partial class Form1
  1. Membuat file baru : Form1.Generic.cs (untuk membuka desain)
partial class Form1
{
}    
Komentar (5)