示例#1
0
 public ReadonlyListAdapter(global::Jint.Engine engine, IReadOnlyList <T> list, ClrPrototype prototype)
     : base(engine)
 {
     _engine           = engine;
     _list             = list;
     Prototype         = prototype;
     _indexPropertyStr =
         Target.GetType().GetRecursive(x => x.BaseType).SelectMany(x =>
                                                                   x.GetProperties().Where(p => p.GetIndexParameters().Length != 0 &&
                                                                                           p.GetCustomAttribute <JsHiddenAttribute>() == null &&
                                                                                           p.GetIndexParameters()[0].ParameterType == typeof(string)))
         .FirstOrDefault();
 }
示例#2
0
        public ObjectInstance GetPrototype(Type type)
        {
            if (_prototypes.TryGetValue(type, out var prototype))
            {
                return(prototype);
            }

            var baseType      = type.BaseType;
            var basePrototype = baseType == typeof(object) ? Engine.Object.PrototypeObject : GetPrototype(baseType);

            prototype = new ClrPrototype(Engine, this, type, basePrototype);
            _prototypes.Add(type, prototype);
            return(prototype);
        }