events - .Net wrapper eventhandling -


situation:
have dll , program should use dll late binding.

every method working events. excample there logging event. want own logging method in program here problem. don't no how.

dll log class (c#):

/// <summary> /// log helper class. /// </summary> public static class log {      // ######### enum #############################################################################################      /// <summary>     /// log level enum.     /// </summary>     public enum loglevel {         none = -1,         debug = 0,         info = 1,         warn = 2,         error = 3,         fatal = 4     }       // ######### events ###########################################################################################      /// <summary>     /// log helper class log event.     /// </summary>     public static event eventhandler<helperlogeventargs> helperlog;       // ######### constructor ######################################################################################      /// <summary>     /// default constructor     /// </summary>     static log() {         helperlog += debuglog;     }       // ######### methods ##########################################################################################      /// <summary>     /// log helper class log event handling.     /// </summary>     /// <param name="e">log event arguments</param>     public static void onhelperlog(helperlogeventargs e) {         eventhandler<helperlogeventargs> handler = helperlog;         if (handler != null) {             handler(null, e);         }     }       /// <summary>     /// log message debug console.     /// </summary>     /// <param name="sender">event sender</param>     /// <param name="e">log event arguments</param>     private static void debuglog(object sender, helperlogeventargs e) {         debug.writeline(string.format(" [{0}]: {1}", e.loglevel.tostring(), e.message));     }       /// <summary>     /// log message.     /// </summary>     /// <param name="level">log level</param>     /// <param name="message">log message</param>     public static void log(loglevel level, string message) {         helperlogeventargs args = new helperlogeventargs();         args.loglevel = level;         args.logtime = datetime.now;         args.message = message;         onhelperlog(args);     }       // ######### classes #####################################################################################      /// <summary>     /// log helper class event argument class.     /// </summary>     public class helperlogeventargs : eventargs {         /// <summary>         /// log message log level.         /// </summary>         public log.loglevel loglevel;          /// <summary>         /// log message text.         /// </summary>         public string message;          /// <summary>         /// log message log timestamp.         /// </summary>         public datetime logtime;     }  } 

and have wrapper class in external program loads dll unfortunately in language (vb.net.):

if _oassembly nothing     _oassembly = assembly.loadfrom(stfshelperdllpath) end if  ' not throw exception return nothing. _otfshelper = _oassembly.createinstance("tfshelper.tfshelper") if _otfshelper nothing     ' throw manually exception on error.     throw new exception("## tfshelper not loaded. ##") end if 

now can show me how write , add logging method/ event hander in external programm called event in ddl raised?

one possible solution use reflection add event:

' add event handler dim method methodinfo = me.gettype().getmethod("<neweventhandlername>", bindingflags.nonpublic or bindingflags.instance or bindingflags.public) dim eventinfo eventinfo = _otfshelper.gettype().getevent("<eventname>") dim type type = eventinfo.eventhandlertype dim handler [delegate] = [delegate].createdelegate(type, me, method) eventinfo.addeventhandler(_otfshelper, handler) 

Comments

Popular posts from this blog

searchKeyword not working in AngularJS filter -

sequelize.js - Sequelize: sort by enum cases -

user interface - how to replace an ongoing process of image capture from another process call over the same ImageLabel in python's GUI TKinter -