以下示例有效,但是如何更改它以便执行现有的回调方法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();
}
}
}
答案 0 :(得分:3)
使方法OnCreateOfferComplete为static。这应该可以解决你的问题。
答案 1 :(得分:1)
制作OnCreateOfferComplete方法静态。
答案 2 :(得分:1)
问题是您的方法OnCreateOfferComplete()
必须是static
。
答案 3 :(得分:1)
问题是您是从静态方法调用CreateOffer(OnCreateOfferComplete是一个实例方法)。
在这种情况下,只需将OnCreateOfferComplete
方法声明为静态。
答案 4 :(得分:1)
我认为它应该是静态的:
private static void OnCreateOfferComplete()
{
Console.WriteLine("finished");
}
...因为您是从静态Main
方法调用它。