将方法作为C#中的参数从其他类传递

时间:2017-05-09 09:34:24

标签: c# lambda delegates .net-3.5 function-pointers

我有一个类“A”,我希望通过将一个函数作为参数传递给另一个不同的类“B”中的方法。作为参数传递的函数在B类中。如果我从A类调用方法,该怎么做呢?

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

我已经看过这个post但是它告诉我如何通过将另一个方法作为参数传递来调用main方法,但是来自同一个类,而不是不同的类。

例如,在下面的帖子中提供了以下示例:

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;
    }
}

2 个答案:

答案 0 :(得分:2)

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

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

        (...)
}

答案 1 :(得分:1)

试试这个

uniq_ID