2015-05-05 4 views
1

Извинения, если это звучит сложно, мой вокал не полностью со мной сегодня.Передача частичного метода в качестве параметра, соединение, затем запуск метода

У меня есть метод, где я хочу использовать .click Пример

middle.click(); 

Но у меня есть еще один

end.click(); 

Что делать, если я хочу передать либо «средний» или «конец» как параметр, можно ли это сделать

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

ответ

2

Это должно было бы выглядеть примерно так:

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

Или вы могли бы сделать это:

MethodGo(string usedforSomethingElse, Func<string> thisMethod) 
{ 
    thisMethod(); 
} 
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(); 
     } 
    } 
} 

в приведенном выше коде, теперь вы можете передать экземпляр середине или в конце класса, как и реализуют один и тот же интерфейс. Строковый результат = MethodtoGo (m1); Метод MethodToGo имеет один параметр интерфейса типа, который означает, что любой класс, реализующий интерфейс, может быть передан в качестве входного сигнала для метода.

надеюсь, что это поможет.

Смежные вопросы