c# - Passing a method as a parameter with zero or more parameters for the passed in method? -


i'm trying code i've called 'trigger'. take object, function , kind of activation criteria. once activated, runs method on object.

here's basic stripped down example. works expected now. example usage be:

someobject myobj = new someobject(); mytrigger trigger = new mytrigger(myobj, "delete"); trigger.activate(); // calls myobj.delete(); 

now i've called invoke null parameters can go (i think). problem i'm having getting 'zero or more paramters' single parameter in function declaration. need thrid parameter when creating mytrigger parameters pass during invoke.

or there better way it? i.e. can somehow pass object, function call , parameters single parameter? maybe 2 parameters?

you have use delegates.

// rewrite trigger constructor class mytrigger<ttarget> {     public mytrigger(ttarget target, action<ttarget> action);     public void activate()     {         this._action(this._target);     } }  // call or without parameters someobject myobj = new someobject(); var trigger = new mytrigger<someobject>(myobj, o => o.delete(1234)); trigger.activate(); 

you can create static helper class make creation code simpler write:

static class mytrigger {     public mytrigger<ttarget> create<ttarget>(ttarget target, action<ttarget> action)     {         return new mytrigger<ttarget>(target, action);     } }  // write initialization code (you don't have specify type parameter anymore): var trigger = mytrigger.create(myobj, o => o.delete()); 

Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -