一种在变量中存储方法的方法?

时间:2016-10-23 13:33:31

标签: c# variables methods

您好我是编程新手。 基本上我需要在类B的方法中将类A中的方法A存储在类B的变量A中,但我似乎无法找到方法。

举个例子: A类

public void methodA()
{
*method*
}

B类

Delegate variableA; //I believe using Delegate is wrong

public void methodB();
{
variableA = ClassA.methodA();
}

然后在B类中会有另一种方法将变量与存储的方法一起使用。

public void methodC();
{
variableA;
}

这不是我所拥有的确切代码,但这基本上是它的要点。任何帮助表示赞赏:)

编辑:感谢大家的帮助!

3 个答案:

答案 0 :(得分:1)

ClassA定义:

public class ClassA
{
    public void MethodA() 
    {
        Console.WriteLine("Hello World!");
    }
}

ClassB定义:

public class ClassB
{
    private Action VariableA { get; set; }

    public void MethodB(ClassA classA)
    {
        VariableA = classA.MethodA;
    }

    public void MethodC()
    {
        VariableA();
    }
}

Program定义:

static void Main(string[] args)
{
    ClassA classA = new ClassA();
    ClassB classB = new ClassB();
    classB.MethodB(classA);
    classB.MethodC();
    Console.ReadLine();
}

答案 1 :(得分:0)

使用反射:

public class A
{
    public void MethodA()
    {
        Console.WriteLine("MethodA");
    }

    public static void StaticMethodA()
    {
        Console.WriteLine("StaticMethodA");
    }
}

public class B
{
    MethodInfo mv = typeof(A).GetMethod("MethodA");
    MethodInfo smv = typeof(A).GetMethod("StaticMethodA");

    public void CheckA(bool useStatic)
    {
        if (useStatic) smv.Invoke(null, null);
        else mv.Invoke(new A(), null);
    }
}

class MainClass
{
    [STAThread]
    public static void Main(string[] args)
    {
        var b = new B();
        b.CheckA(true);
        b.CheckA(false);
    }
}

请参阅MSDN中的details

答案 2 :(得分:0)

以下是一个例子:

public class Test
   {
       private Action<int> hiddenMethod = new Action<int>((i) =>
       {
           Console.WriteLine(i);
       });

       public void PublicMethod(int i)
       {
           hiddenMethod(i);
       }
   }

使用它:

class Program
{
    static void Main(string[] args)
    {
        Test t = new Test();
        t.PublicMethod(21);
        Console.Read();
    }
}