从不同的 class 在 C# 中将方法作为参数传递

Pass a method as a parameter in C# from a different class

我有一个 class "A",我想通过传递一个函数作为参数来调用另一个不同 class "B" 中的方法。作为参数传递的函数在 class B 中。那么如果我从 class A 调用方法怎么办?

我正在使用 Visual Studio 2008 和 .NET Framework 3.5。

我看过这个 post 但它告诉我们如何通过将另一个方法作为参数传递来调用 main 方法,但是来自同一个 class,没有不同 class.

例如,在 post 下面提供了示例:

public class Class1
{
    public int Method1(string input)
    {
        //... do something
        return 0;
    }

    public int Method2(string input)
    {
        //... do something different
        return 1;
    }

    public bool RunTheMethod(Func<string, int> myMethodName)
    {
        //... do stuff
        int i = myMethodName("My String");
        //... do more stuff
        return true;
    }

    public bool Test()
    {
        return RunTheMethod(Method1);
    }
}

但如何执行以下操作:

public Class A
{
        (...)

        public bool Test()
        {
            return RunTheMethod(Method1);
        }

        (...)
}


public class B
{
    public int Method1(string input)
    {
        //... do something
        return 0;
    }

    public int Method2(string input)
    {
        //... do something different
        return 1;
    }

    public bool RunTheMethod(Func<string, int> myMethodName)
    {
        //... do stuff
        int i = myMethodName("My String");
        //... do more stuff
        return true;
    }
}

试试这个

public Class A
{
        (...)

        public bool Test()
        {
            var b = new B();
            return b.RunTheMethod(b.Method1);
        }

        (...)
}

您需要在 class A 中创建一个 class B 的实例,然后调用该方法,例如,将您的 class A 更改为:

public Class A
{
        (...)
        private B myClass = new B();
        public bool Test()
        {
            return myClass.RunTheMethod(myClass.Method1);
        }

        (...)
}