IronRuby.Builtins.RubyModule.SetMethodNoMutateNoEventNoLock C# (CSharp) Метод

SetMethodNoMutateNoEventNoLock() приватный Метод

private SetMethodNoMutateNoEventNoLock ( RubyContext callerContext, string name, IronRuby.Runtime.Calls.RubyMemberInfo method ) : void
callerContext RubyContext
name string
method IronRuby.Runtime.Calls.RubyMemberInfo
Результат void
        internal void SetMethodNoMutateNoEventNoLock(RubyContext/*!*/ callerContext, string/*!*/ name, RubyMemberInfo/*!*/ method) {
            Context.RequiresClassHierarchyLock();
            Assert.NotNull(name, method);

            if (callerContext != _context) {
                throw RubyExceptions.CreateTypeError(String.Format("Cannot define a method on a {0} `{1}' defined in a foreign runtime #{2}",
                    IsClass ? "class" : "module", _name, _context.RuntimeId));
            }

            if (method.IsUndefined && name == Symbols.Initialize) {
                throw RubyExceptions.CreateTypeError("Cannot undefine `initialize' method");
            }

            PrepareMethodUpdate(name, method);

            InitializeMethodsNoLock();
            _methods[name] = method;
        }

Usage Example

Пример #1
0
        // thread-safe:
        private static void SetLibraryMethod(RubyModule /*!*/ module, string /*!*/ name, RubyMemberInfo /*!*/ method, bool noEvent)
        {
            var context = module.Context;

            // trigger event only for non-builtins:
            if (noEvent)
            {
                // TODO: hoist lock?
                using (context.ClassHierarchyLocker()) {
                    module.SetMethodNoMutateNoEventNoLock(context, name, method);
                }
            }
            else
            {
                module.AddMethod(context, name, method);
            }
        }
All Usage Examples Of IronRuby.Builtins.RubyModule::SetMethodNoMutateNoEventNoLock
RubyModule