将部分方法作为参数传递,然后加入run方法

时间:2015-05-05 15:38:01

标签: c# methods parameters

道歉,如果这听起来很复杂,我的词汇今天并不完全与我同在。

我有一个方法,我想使用.click 示例

middle.click();

但我还有另一个

end.click();

如果我想通过"中间"该怎么办?或者"结束"作为参数,是否可以这样做

MethodGo(string usedforSomethingElse, Func<string> thisMethod)
{
     thisMethod.click();
}

2 个答案:

答案 0 :(得分:2)

它必须看起来更像这样:

MethodGo(string usedforSomethingElse, ISomeObjectWithClickMethod thisObject)
{
     thisObject.click();
}

或者,你可以这样做:

MethodGo(string usedforSomethingElse, Func<string> thisMethod)
{
     thisMethod();
}

答案 1 :(得分:0)

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Threading.Tasks;

        namespace Student
        {
            public interface IMyClick
            {
                string click();
            }
        }
    --------------------------

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Threading.Tasks;

        namespace Student
        {
          public  class Middle : IMyClick
            {

                public string click()
                {
                    return "Middle Click";
                }
            }
        }

    ---------------------------
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace Student
    {
     public class End :IMyClick
        {
            public string click()
            {
                return "End Click";
            }
        }
    }

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Student;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            IMyClick m1 = new Middle();

            IMyClick e1 = new End();

            string result = MethodtoGo(m1);
            Console.WriteLine(result);
            Console.Read();

        }

        static string MethodtoGo(IMyClick cc)
        {
             return cc.click();
        }
    }
}

在上面的代码中,您现在可以传递Middle或End类实例,因为它们都实现了相同的接口。  string result = MethodtoGo(m1); MethodToGo有一个类型为interface的参数,这意味着任何实现接口的类都可以作为输入传递给方法。

希望这会有所帮助。