2008-08-14 27 views
28

Bạn sẽ có thể tạo ra một hình thức chung:Bạn có thể sử dụng các biểu mẫu chung trong C# không?

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

là hợp lệ C#, và biên dịch. Tuy nhiên, nhà thiết kế sẽ không hoạt động và biểu mẫu sẽ ném một ngoại lệ thời gian chạy nếu bạn có bất kỳ hình ảnh nào nói rằng nó không thể tìm thấy tài nguyên.

Tôi nghĩ điều này là do nhà thiết kế biểu mẫu cửa sổ giả định rằng tài nguyên sẽ được lưu trữ dưới tên loại đơn giản.

Trả lời

18

Có bạn có thể! Dưới đây là một bài viết trên blog tôi đã thực hiện một thời gian trước với các trick:

Designing Generic Forms

Edit: Hình như bạn đã làm nó theo cách này. Phương pháp này hoạt động tốt vì vậy tôi sẽ không xem xét nó quá hacky.

+1

Còn nếu bạn có 3 biểu mẫu? Tôi muốn Form3: Form2. Điều này bao gồm các tham số kiểu chung + điều khiển trong Form2. Bất kỳ ý tưởng? – mynkow

0

Tôi có một hack để workaround này, mà làm việc nhưng không phải là lý tưởng:

Thêm một lớp mới cho dự án thừa hưởng các hình thức với tên đơn giản của nó.

internal class MyGenericForm: 
    MyGenericForm<object> { } 

Điều này có nghĩa là mặc dù nhà thiết kế vẫn sai loại mong đợi đơn giản (tức là không có <>) vẫn được tìm thấy.

Các vấn đề liên quan