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

具有接口继承的WinForms数据绑定

  •  3
  • Tony  · 技术社区  · 15 年前

    因为这个问题,我需要有人确认我所看到的,然后才能更改应用程序的域。问题是,当针对彼此继承的接口进行数据绑定时,您无法看到基本接口上的属性。

    我正在开发一个使用数据绑定的WinForms应用程序。这是在.net3.5中,不,我不能使用wpf。

    无论如何,我有一个这样的设置。

    public interface IClassOne
    {
        string Prop1 { get; set; }
    }
    
    public interface IClassTwo : IClassOne
    {
        string Prop2 { get; set; }
    }
    
    public abstract class ClassOne : IClassOne
    {
        public string Prop1 { get; set; }
    }
    
    public class ClassTwo : ClassOne, IClassTwo
    {
        public string Prop2 { get; set; }
    }
    

    基类将包含公共属性和逻辑。基础接口将在其上具有这些公共属性,因此必须在每个具体实现上实现它们。

    如果我将数据绑定到上面的类结构,我将绑定到iclasstwo。问题是当我将数据绑定到iclasstwo时,在WinForms的任何设计器操作中都看不到prop1。即使我绕过了这个限制,得到了一个绑定到prop1的控件,它也不起作用。

    但是,如果我绑定两个Class2,那么数据绑定就可以工作了。

    我不想处理具体的类,因为这会使使用模拟和测试变得过于困难。我也不想把所有东西都放在iclasstwo上,因为当我进行另一个具体的实现时,必须重复代码。

    我需要知道的是,如果这真的不起作用。如果你知道原因,那就是奖金。

    谢谢你 托尼

    1 回复  |  直到 15 年前
        1
  •  1
  •   Tony    15 年前

    http://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/4151e6b6-44f7-45e2-9a8e-92c4f8539095/?prof=required

    这里有一个关于为什么这不起作用的MSDN上张贴的剪报。写这篇文章的海报上写着“邮资已付”。

    不,不能绑定到接口!bindingsource提供了一些将类型用作数据源的帮助。在内部,它将使用类型信息实例化bindingList<gt;实例。也可以添加新项,但除非订阅AddingNew事件,否则AddNew()将失败。

    推荐文章