可以在C#中使用通用形式吗?

时间:2020-03-05 18:39:36  来源:igfitidea点击:

我们应该能够创建通用表单:

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

有效的C#,并进行编译。但是,如果我们有任何图像表明无法找到资源,则设计器将无法工作,并且表单将抛出运行时异常。

我认为这是因为Windows窗体设计器假定资源将以简单类型的名称存储。

解决方案

回答

我有一个解决方法,可以解决,但并不理想:

向该项目添加一个新类,该类将继承其简单名称的表单。

internal class MyGenericForm:
    MyGenericForm<object> { }

这意味着尽管设计者仍然是错误的,仍然可以找到预期的简单类型(即没有&lt;>)。

回答

是的你可以!这是我前段时间通过技巧制作的博客文章:

设计通用表格

编辑:看起来我们已经用这种方式了。这种方法很好用,所以我不会认为它太笨拙。