Example #1
0
        public override PropertyDescriptor GetOwnProperty(JsValue property)
        {
            if (property.IsSymbol())
            {
                return(PropertyDescriptor.Undefined);
            }

            if (TryGetProperty(property, out var x))
            {
                return(x);
            }

            var type = Target.GetType();
            var key  = new Engine.ClrPropertyDescriptorFactoriesKey(type, property.ToString());

            if (!_engine.ClrPropertyDescriptorFactories.TryGetValue(key, out var factory))
            {
                factory = ResolveProperty(type, property.ToString());
                _engine.ClrPropertyDescriptorFactories[key] = factory;
            }

            var descriptor = factory(_engine, Target);

            AddProperty(property, descriptor);
            return(descriptor);
        }
Example #2
0
        public override PropertyDescriptor GetOwnProperty(string propertyName)
        {
            PropertyDescriptor x;

            if (TryGetProperty(propertyName, out x))
            {
                return(x);
            }

            var type = Target.GetType();
            var key  = new Engine.ClrPropertyDescriptorFactoriesKey(type, propertyName);

            System.Func <Jint.Engine, object, Jint.Runtime.Descriptors.PropertyDescriptor> factory;
            if (!_engine.ClrPropertyDescriptorFactories.TryGetValue(key, out factory))
            {
                factory = ResolveProperty(type, propertyName);
                _engine.ClrPropertyDescriptorFactories[key] = factory;
            }

            var descriptor = factory(_engine, Target);

            AddProperty(propertyName, descriptor);
            return(descriptor);
        }