private IObjectModelValue CreateObject(object propVal)
        {
            if (propVal is BaseAdaptiveElement)
            {
                return((propVal as BaseAdaptiveElement).ConvertToObject());
            }
            else if (propVal is IEnumerable && !(propVal is string) && !(propVal is IObjectModelValue))
            {
                var listInit = new ObjectModelListInitialization();
                foreach (var o in (propVal as IEnumerable))
                {
                    listInit.Add(CreateObject(o));
                }
                return(listInit);
            }
            else if (propVal is Enum)
            {
                var enumAttr = GetForContext(propVal.GetType().GetTypeInfo().GetCustomAttributes <ObjectModelEnumAttribute>());
                if (enumAttr != null)
                {
                    return(new ObjectModelEnum(enumAttr.Name, propVal.ToString()));
                }
            }

            return(ObjectModelObject.Create(propVal));
        }
示例#2
0
        public override ObjectModelObject ConvertToObject()
        {
            var obj = base.ConvertToObject();

            obj.ConstructorValues.Add(new ObjectModelString(Content));
            obj.ConstructorValues.Add(new ObjectModelString(Arguments));

            switch (Placement)
            {
            case ActionPlacement.ContextMenu:
                obj.Name = "ToastContextMenuItem";
                break;

            default:
                switch (ActivationType)
                {
                case ActivationType.System:
                    obj.PropertyValues.Clear();
                    var args = Arguments != null ? Arguments : "";
                    switch (args.ToLower())
                    {
                    case "snooze":
                        obj = new ObjectModelObject("ToastButtonSnooze");

                        if (!string.IsNullOrWhiteSpace(Content))
                        {
                            obj.ConstructorValues.Add(new ObjectModelString(Content));
                        }
                        if (InputId != null)
                        {
                            obj.Add("SelectionBoxId", new ObjectModelString(InputId));
                        }
                        break;

                    default:
                        obj = new ObjectModelObject("ToastButtonDismiss");
                        if (!string.IsNullOrWhiteSpace(Content))
                        {
                            obj.ConstructorValues.Add(new ObjectModelString(Content));
                        }
                        break;
                    }
                    break;
                }
                break;
            }

            return(obj);
        }
        public virtual ObjectModelObject ConvertToObject()
        {
            var classAttr = GetObjectModelClassAttribute();

            if (classAttr == null)
            {
                return(null);
            }

            var answer = new ObjectModelObject(classAttr.Name);

            foreach (var propInfo in this.GetType().GetProperties())
            {
                var propAttr = GetObjectModelPropertyAttribute(propInfo);
                if (propAttr != null)
                {
                    object propVal = propInfo.GetValue(this);
                    if (!object.Equals(propAttr.DefaultValue, propVal))
                    {
                        IObjectModelValue value = CreateObject(propVal);

                        if (value != null)
                        {
                            answer.Add(propAttr.Name, value);
                        }
                    }
                }
                else
                {
                    var bindingPropAttr = GetObjectModelBindingPropertyAttribute(propInfo);
                    if (bindingPropAttr != null)
                    {
                        string bindingName = propInfo.GetValue(this) as string;
                        if (bindingName != null)
                        {
                            answer.AddBinding(bindingPropAttr, bindingName);
                        }
                    }
                }
            }

            return(answer);
        }