代码如下:

namespace x{
public class A{
   public string sayHello(){
    
/*
   
classs B
的实例调用class A的这个方法时
    
如何在此处获取classs B的实例的句柄并
    classs B
的实例的方法Add()进行调用
  */
    return "hello evey one";
  }
}
}

namespace y{
using x;
public class B{
  int _n;
   public int n{
     get{return _n;}
     set{_n=value;}
   }  
  public int Add(){
       return ++n;
  }
 static void Main(){
  A a=new A();
  string xx=a.sayHello();
 }

}

}

哪位兄弟知道,请指点一二

用事件实现如下

  1using System;
  2using System.Drawing;
  3using System.Collections;
  4using System.ComponentModel;
  5using System.Windows.Forms;
  6using System.Data;
  7using log4net;
  8using System.Reflection;
  9
 10namespace WY.RisingSun.WMS.UI
 11{
 12    public enum UIStyle{
 13        UIdefault,
 14        UIoffice2003,
 15        UIwinXP,
 16        UIvs2005
 17    }

 18
 19    public class TabedFrmEventArgs : System.EventArgs{
 20        string[] _fireFrmName;
 21        bool _isGetFocus=false;
 22        private     TabedFrmEventArgs(){}
 23        
 24        /// <summary>
 25        /// 
 26        /// </summary>
 27        /// <param name="isGetFocus">which tabed form will Activte</param>
 28        /// <param name="frmName">fireed from names</param>

 29        public TabedFrmEventArgs(bool isGetFocus,params string[] frmName){
 30            _isGetFocus=isGetFocus;
 31            _fireFrmName=frmName;
 32        }

 33
 34        public string[] FireEventFromName{
 35            get{
 36                return _fireFrmName;
 37            }

 38        }

 39        
 40        public bool IsGetFocus{
 41            get{
 42                return _isGetFocus;
 43            }

 44        }

 45
 46    }

 47
 48    /// <summary>
 49    /// form base
 50    /// </summary>

 51    public class frmBase : System.Windows.Forms.Form
 52    {
 53        private System.ComponentModel.Container components = null;
 54        
 55        private UIStyle _style=UIStyle.UIdefault;
 56
 57        public frmBase(){
 58            this.OtherTabedFrmChanged+=new ChangedFrmEventHandler(UpdateTabedFrm);
 59        }

 60        
 61
 62        /// <summary>
 63        /// 清理所有正在使用的资源。
 64        /// </summary>

 65        protected override void Dispose( bool disposing )
 66        {
 67            if( disposing )
 68            {
 69                if (components != null
 70                {
 71                    components.Dispose();
 72                }

 73            }

 74            base.Dispose( disposing );
 75        }

 76
 77        private void InitializeComponent() {
 78            // 
 79            // frmBase
 80            // 
 81            this.AutoScaleBaseSize = new System.Drawing.Size(614);
 82            this.ClientSize = new System.Drawing.Size(292273);
 83            this.Name = "frmBase";
 84            this.Text = "change this text as you will";
 85
 86        }

 87
 88
 89    #region Mointor Height or Width
 90        public static int MonitorHeight{
 91            get{
 92                return System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Height;
 93            }

 94        }

 95
 96        public static int MonitorWidth{
 97            get{
 98                return System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width;
 99            }

100        }

101
102    #endregion

103
104    #region UI Style
105        /// <summary>
106        /// get or set style on contrls of Infragistics 
107        /// </summary>

108        protected virtual UIStyle ContrlSyle{
109            get{return _style;}
110        //    set{_style=value;}
111        }

112        
113        /// <summary>
114        /// change Infragistics contrls style
115        /// </summary>
116        /// <param name="contrlStyle"></param>

117        protected virtual void ChageContrlsStyle(UIStyle contrlStyle){
118            switch(contrlStyle) {
119                case UIStyle.UIoffice2003:
120
121                    break;
122                case UIStyle.UIvs2005:
123
124                    break;
125                case UIStyle.UIwinXP:
126
127                    break;
128                default:
129                    break;
130                                
131            }

132        }

133
134    #endregion

135
136    #region a wrapper for log4net
137
138        private static  ILog _log;
139        
140        /// <summary>
141        /// how to use: set current type handle first then invoke ILog instance method
142        /// e.g.
143        ///  LOG=LogManager.GetLogger(CurrentType);
144        ///  LOG.Info(Msg);
145        ///  LOG.Error(Msg);
146        ///  LOG.Debug(Msg);
147        /// etc     
148        /// </summary>

149        public static  ILog LOG{
150            get{
151                return _log;
152            }

153            set{
154                _log=value;
155            }

156
157        }

158
159    #endregion

160    
161    #region provide a way will be used to communion with different driven classes
162        
163        protected delegate void ChangedFrmEventHandler(object sender, TabedFrmEventArgs evt);
164        
165        protected event ChangedFrmEventHandler OtherTabedFrmChanged;
166        
167        internal virtual void OnOtherTabedFrmChanged(TabedFrmEventArgs evt) {
168            if (OtherTabedFrmChanged != null)
169                OtherTabedFrmChanged(this, evt);
170        }

171        protected virtual void UpdateTabedFrm(object sender, TabedFrmEventArgs evt){
172            try{
173                string[] frmName=evt.FireEventFromName;
174                if (frmName==null||frmName.Length==0return;
175                //do upload frm info
176                frmBase frm=sender as frmBase;
177                frmMain mdiContainer=(frmMain)frm.MdiParent;
178                for (int i=0;i<frmName.Length;i++{
179                    foreach (frmBase fb in mdiContainer.MdiChildren) {
180                        if (frmName[i]==fb.Name) {
181                            fb.updateFrmData(sender,evt);
182                            if(evt.IsGetFocus)fb.Activate();
183                            break;
184                        }

185                    }

186                }

187                //Console.WriteLine(sender.GetType());
188            }
catch(Exception exc){
189                //do log it
190
191            }

192            
193        }

194        
195        /// <summary>
196        /// this method must be override by devin class when fire this method
197        /// </summary>
198        /// <param name="sender">pass event sender to other tabed form</param>
199        /// <param name="evt"></param>

200        internal virtual void updateFrmData(object sender,TabedFrmEventArgs evt){
201            
202        }

203
204    #endregion

205
206    }

207}

208


 1using System;
 2using System.Collections;
 3using System.ComponentModel;
 4using System.Drawing;
 5using System.Windows.Forms;
 6
 7namespace WY.RisingSun.WMS.UI
 8{
 9    public class tt1 : WY.RisingSun.WMS.UI.frmBase
10    {
11        private System.Windows.Forms.TextBox textBox1;
12        private System.Windows.Forms.Button button1;
13        private System.ComponentModel.IContainer components = null;
14
15        public tt1()
16        {
17            InitializeComponent();
18        }

19
20        /// <summary>
21        /// 清理所有正在使用的资源。
22        /// </summary>

23        protected override void Dispose( bool disposing )
24        {
25            if( disposing )
26            {
27                if (components != null
28                {
29                    components.Dispose();
30                }

31            }

32            base.Dispose( disposing );
33        }

34
35        #region 设计器生成的代码
36        /// <summary>
37        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
38        /// 此方法的内容。
39        /// </summary>

40        private void InitializeComponent()
41        {
42            this.textBox1 = new System.Windows.Forms.TextBox();
43            this.button1 = new System.Windows.Forms.Button();
44            this.SuspendLayout();
45            // 
46            // textBox1
47            // 
48            this.textBox1.Location = new System.Drawing.Point(08);
49            this.textBox1.Name = "textBox1";
50            this.textBox1.Size = new System.Drawing.Size(18421);
51            this.textBox1.TabIndex = 0;
52            this.textBox1.Text = "textBox1";
53            // 
54            // button1
55            // 
56            this.button1.Location = new System.Drawing.Point(80112);
57            this.button1.Name = "button1";
58            this.button1.TabIndex = 1;
59            this.button1.Text = "引发事件";
60            this.button1.Click += new System.EventHandler(this.button1_Click);
61            // 
62            // tt1
63            // 
64            this.AutoScaleBaseSize = new System.Drawing.Size(614);
65            this.ClientSize = new System.Drawing.Size(292273);
66            this.Controls.Add(this.button1);
67            this.Controls.Add(this.textBox1);
68            this.Name = "tt1";
69            this.Text = "driven class2";
70            this.ResumeLayout(false);
71
72        }

73        #endregion

74
75        private void button1_Click(object sender, System.EventArgs e) {
76            //base.OnOtherTabedFrmChanged(new TabedFrmEventArgs());
77            //this.OnOtherTabedFrmChanged(new WY.RisingSun.WMS.UI.TabedFrmEventArgs());
78            Form1 frm1=new Form1();
79            base.OnOtherTabedFrmChanged(new TabedFrmEventArgs(true,"tt2"));
80        }

81    }

82}

83
84


 1using System;
 2using System.Collections;
 3using System.ComponentModel;
 4using System.Drawing;
 5using System.Windows.Forms;
 6
 7namespace WY.RisingSun.WMS.UI
 8{
 9    public class tt2 : WY.RisingSun.WMS.UI.frmBase
10    {
11        private System.Windows.Forms.Label label1;
12        private System.ComponentModel.IContainer components = null;
13
14        public tt2()
15        {
16            // 该调用是 Windows 窗体设计器所必需的。
17            InitializeComponent();
18
19            // TODO: 在 InitializeComponent 调用后添加任何初始化
20        }

21
22        /// <summary>
23        /// 清理所有正在使用的资源。
24        /// </summary>

25        protected override void Dispose( bool disposing )
26        {
27            if( disposing )
28            {
29                if (components != null
30                {
31                    components.Dispose();
32                }

33            }

34            base.Dispose( disposing );
35        }

36        
37        internal override void updateFrmData(object sender, TabedFrmEventArgs evt) {
38            string xx=sender.GetType().Name;
39            this.label1.Text="hello i love you forever!!!! the "+xx+" tabed form fire this method";
40            this.label1.ForeColor=System.Drawing.Color.Red;
41        }

42
43
44        #region 设计器生成的代码
45        /// <summary>
46        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
47        /// 此方法的内容。
48        /// </summary>

49        private void InitializeComponent()
50        {
51            this.label1 = new System.Windows.Forms.Label();
52            this.SuspendLayout();
53            // 
54            // label1
55            // 
56            this.label1.Location = new System.Drawing.Point(5640);
57            this.label1.Name = "label1";
58            this.label1.Size = new System.Drawing.Size(47240);
59            this.label1.TabIndex = 0;
60            this.label1.Text = "it will be chanaged ";
61            // 
62            // tt2
63            // 
64            this.AutoScaleBaseSize = new System.Drawing.Size(614);
65            this.ClientSize = new System.Drawing.Size(608269);
66            this.Controls.Add(this.label1);
67            this.Name = "tt2";
68            this.Text = "tt2";
69            this.ResumeLayout(false);
70
71        }

72        #endregion

73    }

74}

75
76