Tôi tạo ra một lớp chung cơ sở cho một WinForm UserControl:lớp cơ sở chung cho WinForm UserControl
public partial class BaseUserControl<T> : UserControl
{
public virtual void MyMethod<T>()
{
// some base stuff here
}
}
Và một usercontrol dựa trên rằng:
public partial class MyControl : BaseUserControl<SomeClass>
{
public override void MyMethod<SomeClass>()
{
// some specific stuff here
base.MyMethod<SomeClass>();
}
}
Nó hoạt động tốt, nhưng MyControl không thể chỉnh sửa trong VisualStudio Designer, bởi vì nó nói nó không thể tải lớp cơ sở. Tôi đã cố gắng để xác định một lớp BaseUserControl, không chung chung, hy vọng nó sẽ tải nó, nhưng lừa dường như không hoạt động.
Tôi đã có một cách giải quyết: xác định một giao diện, IMyInterface <T>, và sau đó tạo ra sự kiểm soát của tôi như
public partial class MyControl : UserControl, IMyInterface<SomeClass>
Nhưng tôi đã làm mất cơ sở phương pháp của tôi ảo (không phải là một vấn đề lớn, nhưng vẫn còn ...).
Có cách nào để tạo một lớp chung chung cho UserControl, với khả năng chỉnh sửa nó trong VisualStudio Designer không?
bạn không cần phải mất cơ sở phương pháp ảo của bạn, chứa lớp implementor thay vì kế thừa từ nó. – Robocide