在做一个类ClassA,想调用类外部的方法FunctionA()。C++里可以把指针传过去,但C#里怎么处理?在尝试委托,可是还是没有搞明白应该怎么用。ClassA将来会做成一个Dll文件,但是这个FunctionA()中的处理是根据需要随时更改的;对于ClassA的每一个实例,FunctionA()可能会不同。请教各位老师了~~~~谢谢。

解决方案 »

  1.   

    就跟其他地方调ClassA里的方法一样啊
      

  2.   

    用接口以后包含不同FunctionA的类 ClassB 都实现这接口然后在 ClassA的构造函数传入这接口的实例 (ClassB)通过 ClassB.FunctionA实现
      

  3.   

    pt1314917:包含Function()函数的类是不确定的。
    qiujsh:是ClassA调用ClassA外的方法,不是外部调用ClassA里的方法。
      

  4.   

    FunctionA()能对传入FunctionA()的参数进行处理,这需要你在FunctionA()中具体实现。调用类外部的方法如果此方法在一个类中可以实例化类在引用,也可以用委托,将这个方法注册到委托上,委托的使用自己看看书,很简单
      

  5.   


      public class A
            {
                public void Test()
                {
                    if (VFunctionA != null) VFunctionA.Invoke();
                }            public delegate void FunctionA();
                public FunctionA VFunctionA;
            } 
                A a1 = new A();
                a1.VFunctionA = new A.FunctionA(FunctionA1);
                a1.Test();
                A a2 = new A();
                a2.VFunctionA = new A.FunctionA(FunctionA2);
                a2.Test();      
            public void FunctionA1()
            {
                MessageBox.Show("A1");
            }        public void FunctionA2()
            {
                MessageBox.Show("A2");
            }不知道是不是这个意思
      

  6.   


    cryeyes:可是这个ClassB也是不确定的。比如,在一个类中,我要同时使用ClassA的两个实例,他们所调用的对应的FunctionA是不一样的。
      

  7.   


    只需给每个classb都加上interfaceA的实现ClassA的实例实现的具体方法取决于你传入的classB的实例接口只是用来提前申明一个参数的位置,因为是强类型