diff --git a/src/mod/languages/mod_managed/managed/Util.cs b/src/mod/languages/mod_managed/managed/Util.cs
index 18c2d89369..7fd5194770 100644
--- a/src/mod/languages/mod_managed/managed/Util.cs
+++ b/src/mod/languages/mod_managed/managed/Util.cs
@@ -46,5 +46,31 @@ namespace FreeSWITCH {
if (cons == null) throw new ArgumentException(ty.Name + " constructor not found.");
return (T)cons.Invoke(new object[] { cPtr, false });
}
+
+ ///
+ /// Getting IntPtr from wrapper
+ ///
+ /// swig generated class
+ /// instance
+ /// Original pointer
+ public static IntPtr GetPtr(T obj)
+ {
+ // internal static HandleRef getCPtr(CoreSession obj)
+ var ty = typeof(T);
+ var bflags = BindingFlags.Static | BindingFlags.NonPublic;
+ var getCPtr = ty.GetMethod("getCPtr", bflags, null, new[] { typeof(T) }, null);
+
+ if (getCPtr != null)
+ {
+ var handleRef = getCPtr.Invoke(null, new object[] { obj });
+
+ if (handleRef is HandleRef)
+ {
+ return ((HandleRef)handleRef).Handle;
+ }
+ }
+
+ return IntPtr.Zero;
+ }
}
}