代码之家  ›  专栏  ›  技术社区  ›  Keith

你能在C中使用通用形式吗?

  •  30
  • Keith  · 技术社区  · 17 年前

    您应该能够创建一个通用表单:

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

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

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

    2 回复  |  直到 12 年前
        1
  •  18
  •   Matt Hamilton    17 年前

    是的,你可以!这是我不久前用这个技巧写的一篇博文:

    Designing Generic Forms

    编辑:看起来你已经这样做了。这个方法很好用,所以我不会认为它太粗糙。

        2
  •  0
  •   Keith    17 年前

    我有一个破解程序可以解决这个问题,但不太理想:

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

    internal class MyGenericForm:
        MyGenericForm<object> { }
    

    这意味着尽管设计器仍然错误,但预期的简单类型(即 <> )仍然找到。