2009-10-15 58 views
0

下面的例子可以工作,但是我怎樣才能改變它,以便執行匿名方法而不是執行我現有的回調方法OnCreateOfferComplete()如何執行回調方法而不是匿名方法?

using System; 

namespace TestCallBack89393 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      OfferManager offerManager = new OfferManager(); 
      offerManager.CreateOffer("test",() => Console.WriteLine("finished.")); 

      //offerManager.CreateOffer("test", OnCreateOfferComplete); 
      //above line gives error: an object reference is required 
      //for a non-static field... 



      Console.ReadLine(); 

     } 

     private void OnCreateOfferComplete() 
     { 
      Console.WriteLine("finished"); 
     } 
    } 


    public class OfferManager 
    { 

     public void CreateOffer(string idCode, Action onComplete) 
     { 
      if (onComplete != null) 
       onComplete(); 
     } 
    } 
} 

回答

3

Make方法OnCreateOfferComplete static。這應該解決你的問題。

1

Make OnCreateOfferComplete方法static

1

問題是您的方法OnCreateOfferComplete()需要爲static

1

問題是你從一個靜態方法調用CreateOffer(OnCreateOfferComplete是一個實例方法)。

在這種情況下,只聲明您的OnCreateOfferComplete方法是靜態的。

1

我覺得應該是靜態的:

private static void OnCreateOfferComplete() 
{ 
    Console.WriteLine("finished"); 
} 

...因爲你是從靜態Main方法調用它。