예제 #1
0
        private object BindObject(DObject obj, Type targetType)
        {
            object instance = Activator.CreateInstance(targetType);// no ctor parameters

            FieldInfo[] fi = targetType.GetFields(BindingFlags.Public | BindingFlags.Instance);
            object      value;

            foreach (var field in fi)
            {
                if (SetSpecifiedField(instance, field))
                {
                    continue;
                }

                value = obj.GetProperty(field.Name, null, true);

                if (value != null)
                {
                    field.SetValue(instance, Bind(value, field.FieldType));
                }
            }

            lastPrimitive = false;

            return(instance);
        }
예제 #2
0
        public static object GetObjectProperty(DObject/*!*/ obj, string name, DTypeDesc caller, bool quiet)
        {
            Debug.Assert(obj != null && name != null);

            object property = obj.GetProperty(name, caller, quiet);

            return PhpVariable.Dereference(property);
        }
예제 #3
0
        private object BindObject(DObject obj, Type targetType)
        {
            object instance = Activator.CreateInstance(targetType);// no ctor parameters

            FieldInfo[] fi = targetType.GetFields(BindingFlags.Public | BindingFlags.Instance);
            object value;

            foreach (var field in fi)
            {
                if (SetSpecifiedField(instance, field))
                    continue;

                value = obj.GetProperty(field.Name, null, true);

                if (value != null)
                {
                    field.SetValue(instance, Bind(value, field.FieldType));
                }
            }

            lastPrimitive = false;

            return instance;
        }