user1151923
user1151923

Reputation: 1872

wrap anonymous function with another call

I have this code in which I am trying to wrap an anonymous function by another call so when it is actually the wrapper's value that is returned and not the original function's.

In the code below however I get a NullPointerException in the last call. I am sure I am not doing something right, but beats me what it is.

class Program
{
    public class MyClass
    {
        public int MyProp { get; set; }
    }

    private static List<Func<MyClass, object>> Calls;

    private static object ExtraCall(int obj)
    {
        var returnVal = 8;

        //do some stuff

        return returnVal;
    }

    static void Main(string[] args)
    {
        Calls = new List<Func<MyClass, object>>();

        Calls.Add(c => c.MyProp);

        Func<MyClass, object> func = c => c.MyProp;
        Calls.Add(c => ExtraCall((int)func(func.Target as MyClass)));

        var obj = new MyClass(){ MyProp = 7 };
        var test1 = Calls[0](obj);
        var test2 = Calls[1](obj);
    }
}

Upvotes: 0

Views: 228

Answers (1)

andreycha
andreycha

Reputation: 405

func.Target is null because this delegate doesn't have any instance which it is invoked on. You can try following code:

    Calls.Add(c => ExtraCall((int)func(c)));

Upvotes: 2

Related Questions