internal static void RegisterCounterpart(JniEnvironment environment, JniClass peer, Type counterpartType) { JniNativeMethodHolder nmHolder = new JniNativeMethodHolder(); nmHolder.PopulateFromType(counterpartType); if (nmHolder.Count > 0) { peer.RegisterNatives(environment, nmHolder); } }
internal void RegisterNatives( JniEnvironment environment, JniNativeMethodHolder holder ) { VerifyEnvironment(environment); VerifyInputObject(holder); DelegatePin[] pins = null; JniNativeMethod[] methods = holder.ToJniNativeMethodArray(out pins); JavaVM.AddDelegatePins(pins); try { int result = JniEnvironment.Functions.RegisterNatives(environment.Handle, this.Handle, methods, methods.Length); if (0 != result) { JniException.CheckErrorCode(environment, result); } // EXCEPTION CHECK: Do nothing, already checked for exception above. } finally { JniNativeMethodHolder.FreeArrayMemory(methods); } }