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(); }
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); }