传递的动态方法始终为null

时间:2015-01-27 23:31:12

标签: c# .net

我试图将动态方法作为参数传递给另一个方法。 但是,传递的方法始终为null。如果我直接调用该方法,一切正常。

我首先尝试使用给定的委托作为参数,然后使用动态关键字,如下所示。

有人可以帮助我吗?

我正在使用SignalR Framework,因此Clients.Caller是动态对象。

public void Dummy() {

        Clients.Caller.getChunk(new byte[] { 0x01 });               // I work fine!
        SendData(new byte[] { 0x01 }, Clients.Caller.getChunk);     // I don't?
    }

 private void SendData(byte[] bigData, dynamic targetFunction)
    {
        targetFunction(bigData); // targetFunction always null.
    }

2 个答案:

答案 0 :(得分:0)

您似乎可能需要实例化委托才能使用或调用它。我写了一些草率的代码,但我希望它有所帮助。

  class Program
{
    delegate void GetChunk(byte[] address);

    static void Main(string[] args)
    {
        Class1 class2 = new Class1();
        GetChunk del = new GetChunk(TheDelegate);
        SendData(new byte[] {0x01}, del);
    }

    public static void SendData(byte[] data, dynamic targetFunction)
    {
        targetFunction(data);
    }

    static void TheDelegate(byte[] chunk)
    {
        Console.WriteLine(chunk);
    }
}

答案 1 :(得分:0)

static void Main(string[] args)
{
  TestClass class2 = new TestClass();
  Action<byte[]> targetFunction = TheDelegate;
  SendData(new byte[] { 0x01 }, targetFunction);
}

public static void SendData(byte[] data, dynamic targetFunction)
{
  targetFunction(data);
}

private static void TheDelegate(byte[] chunk)
{
  Console.WriteLine(chunk[0]);
  Console.ReadKey();
}