zoukankan      html  css  js  c++  java
  • 接口绑定的问题

    发现一个问题,各位兄弟们看看。偶是新手,多多指教啊。


    实体类以及相关接口定义如下:
       public interface ISerialObject {
                     int UID { get; }
                     string Name { get; set; }
       }

       public interface IChem : ISerialObject {
                      string RptName { get; set; }
        }

        public class Chem : IChem {
              public Chem() {
                         id = ++no;
                         Name = id.ToString();
                         RptName = Name + Name;
              }
              private static int no = 0;
              private int id;
              public int UID {
                          get{ 
                           return id;
                      }
              }

             private string name;
             public string Name {
                         get { return name; }
                         set { name = value; }
                }

              private string rptName;
              public string RptName {
                         get { return rptName; }
                         set { rptName = value; }
               }

               public static IChem Create()
              {
                         return new Chem();
               }
    }

    窗口有2个TextBox用来绑定数据源

    private BindingSource bindSrc = new BindingSource();//定义为窗口成员变量

    private void Form1_Load(object sender, EventArgs e)
    {

           BindingList<IChem> curr = new BindingList<IChem>();
           curr.Add( Chem.Create() );
           curr.Add(Chem.Create());

           bindSrc.DataSource = curr;

           ISerialObject d = (ISerialObject)curr[0];
           IChem f = (IChem)d;//调试时,看内存,居然只有RptName,Name好像不可见
           f.Name = "22";//但是可以直接修改Name

          Binding nameBinding = this.textBox1.DataBindings.Add("Text", bindSrc,  “RptName", true);//正常运行
          nameBinding = this.textBox2.DataBindings.Add("Text", bindSrc, "Name", true);//异常 ,报错。
    }

    分析:

        MS不支持。

    解决办法:

       1、IChem与ISerialObject合了

       2、在IChem增加 int UID { get; }
                     string Name { get; set; }
          相当于只申明有此接口。

  • 相关阅读:
    【GitHub】在Mac上配置/使用Github
    【IOS开发】《多线程编程指南》笔记
    【设计模式】二、观察者模式
    php 接受json数据时有转义字符处理办法
    highcharts 常用配置
    apache虚拟主机配置
    php,phpexcel插件导出excel使用
    json_decode转换json数据为数组出现的问题!
    redis 主从服务器
    linux 下安装redis
  • 原文地址:https://www.cnblogs.com/YangYu/p/1513536.html
Copyright © 2011-2022 走看看