protected IntPtr DelegateToCallbackPointer( HDrawingObject.HDrawingObjectCallbackClass c, string evt) { HDrawingObject.HDrawingObjectCallback hdrawingObjectCallback = (HDrawingObject.HDrawingObjectCallback)((drawid, window, type) => { HDrawingObject drawid1 = new HDrawingObject(drawid); HWindow window1 = new HWindow(window); drawid1.Detach(); window1.Detach(); c(drawid1, window1, type); }); GC.KeepAlive((object)hdrawingObjectCallback); GC.SuppressFinalize((object)hdrawingObjectCallback); switch (evt) { case "on_resize": this.onresize = hdrawingObjectCallback; break; case "on_attach": this.onattach = hdrawingObjectCallback; break; case "on_detach": this.ondetach = hdrawingObjectCallback; break; case "on_drag": this.ondrag = hdrawingObjectCallback; break; case "on_select": this.onselect = hdrawingObjectCallback; break; } return(Marshal.GetFunctionPointerForDelegate(hdrawingObjectCallback)); }