class A {
// 假设这个类非常的复杂,有可能继承 抽象类,或者接口.
// 这些字段只是用来 控制程序的逻辑方向. 逻辑代码有可能分布在不同的类里面.
// 类 A 公布了 这些逻辑代码的控制条件 s1~s8
// 感觉可以把类A当作一个工厂来看待
public string s1;
public string s2;
public string s3;
public string s4;
public string s5;
public string s6;
public string s7;
public ArrayList s8; // s8 可能会更加复杂, 可以根据每个 ArrayList 就分支一个逻辑方向 // 当然 这些只是字段,一些判断性代码省略,姑且当作 类 A 与 F 互相同步的值,都符合类A的规则
}// 表示窗体类 
class F {
A a = new A();
public string s1;
public string s2;
public string s3;
public string s4;
public string s5;
public string s6;
public string s7;
public ArrayList s8; public void Start() {
init();
} // 如果是这样做的话,会不会觉的太松耦合,如果 A 变动下,其他都要跟着变动. 
public void init() {
s1 = a.s1;
s2 = a.s2;
s3 = a.s3;
s4 = a.s4;
s5 = a.s5;
s6 = a.s6;
s7 = a.s7;
s8 = a.s8;
}
}

解决方案 »

  1.   

    请注意:
    类 A 
    public string s1;
        public string s2;
        public string s3;
        public string s4;
        public string s5;
        public string s6;
        public string s7;
    }
    这些字段只是用来 控制程序的逻辑方向. 不一定是 string 
    比方说
    if(s1=="A"){
    //Doing....
    }elseif(s1=="a"){
    //Doing....
    }
    .....
      

  2.   

    如果你要让他们不变化的话,可以把那些数据都设成STATIC类型的.
      

  3.   

    如果F中的s1-s7与A中的相同,为什么不使用属性直接操作A中的成员?这样就同步了。
    如:class F {
        A a = new A();
        public string s1
        {
           get{return a.s1;}
           set{a.s1=value;}
        }
        
      

  4.   

    bindingsource和binding设计出来就是做这个事情的至于你说的啥控制逻辑,那个实际根本就不应该在界面层实现,把原本是逻辑层的事情