Ejemplo n.º 1
0
        public static T Get <T>(this ShibaObject shibaObject, string name)
        {
            var value = shibaObject.FirstOrDefault(it => it.Key == name).Value;

            switch (value)
            {
            case null:
                return(default);

            case JToken token:

                break;

            default:
            {
                var result = Singleton <ValueVisitor> .Instance.DynamicVisit(value, null);

                if (result is T targetResult)
                {
                    return(targetResult);
                }

                if (result.TryChangeType(typeof(T), out var castResult))
                {
                    return((T)castResult);
                }

                break;
            }
            }


            return(default);
Ejemplo n.º 2
0
        private ShibaObject Visit(JObject item, IShibaContext context)
        {
            var dic = new ShibaObject();

            foreach (var(key, value) in item)
            {
                dic.TryAdd(key, DynamicVisit(value, context));
            }

            return(dic);
        }
Ejemplo n.º 3
0
        private ShibaObject VisitJavascriptObject(JavaScriptValue value)
        {
            var propers = VisitJavascriptArray(value.GetOwnPropertyNames()).Cast <string>().ToList();
            var obj     = new ShibaObject();

            foreach (var name in propers)
            {
                obj.TryAdd(name, Visit(value.GetProperty(name.ToJavaScriptPropertyId()), null));
            }

            return(obj);
        }