コード例 #1
0
        private static void TryDispose(this IJavaObject javaObject)
        {
            if (!javaObject.IsAlive())
            {
                return;
            }
            var hasDefaultConstructor = ObjectToDefaultJavaConstructor
                                        .GetOrAdd(javaObject.GetType(), type =>
            {
                var constructor = type.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, DefaultJavaConstructorArgs, null);
                if (constructor == null)
                {
                    if (Tracer.TraceWarning)
                    {
                        Tracer.Warn($"The type {type} cannot be disposed");
                    }
                    return(false);
                }
                return(true);
            });

            if (hasDefaultConstructor)
            {
                javaObject.Dispose();
            }
        }