示例#1
0
 bool EnumMemberInfoComparer(EnumMemberInfo enumMemberInfo, string description, string id, string imageName, string name)
 {
     return(description == enumMemberInfo.Description &&
            (enumMemberInfo.Id == null) ? (id == null) : id == enumMemberInfo.Id.ToString() &&
            (enumMemberInfo.Image == null) ? (imageName == null) : imageName == enumMemberInfo.Image.ToString() &&
            enumMemberInfo.Name == name);
 }
示例#2
0
        internal static JSEnumLiteral TryCreate(TypeInfo enumTypeInfo, long value)
        {
            EnumMemberInfo[] enumMembers = null;
            if (enumTypeInfo.IsFlagsEnum)
            {
                if (value == 0)
                {
                    enumMembers = (
                        from em in enumTypeInfo.EnumMembers.Values
                        where em.Value == 0
                        select em
                        ).Take(1).ToArray();
                }
                else
                {
                    enumMembers = (
                        from em in enumTypeInfo.EnumMembers.Values
                        where (em.Value != 0) &&
                        ((value & em.Value) == em.Value)
                        select em
                        ).ToArray();
                }
            }
            else
            {
                EnumMemberInfo em;
                if (enumTypeInfo.ValueToEnumMember.TryGetValue(value, out em))
                {
                    enumMembers = new EnumMemberInfo[1] {
                        em
                    }
                }
                ;
            }

            if ((enumMembers != null) && (enumMembers.Length > 0))
            {
                return(new JSEnumLiteral(value, enumMembers));
            }

            return(null);
        }
    }
 public static Lazy <ImageSource> GetLazyImageSource(EnumMemberInfo enumMemberInfo)
 {
     return((Lazy <ImageSource>)enumMemberInfo.GetType().GetField("image", System.Reflection.BindingFlags.NonPublic |
                                                                  System.Reflection.BindingFlags.Instance).GetValue(enumMemberInfo));
 }
示例#4
0
        protected JSExpression Translate_Ldc(ILExpression node, long value)
        {
            string typeName = null;
            var expressionType = node.ExpectedType ?? node.InferredType;
            TypeInfo typeInfo = null;
            if (expressionType != null) {
                typeName = expressionType.FullName;
                typeInfo = TypeInfo.Get(expressionType);
            }

            if ((typeInfo != null) && (typeInfo.EnumMembers.Count > 0)) {
                EnumMemberInfo[] enumMembers = null;
                if (typeInfo.IsFlagsEnum) {
                    if (value == 0) {
                        enumMembers = (
                            from em in typeInfo.EnumMembers.Values
                            where em.Value == 0
                            select em
                        ).Take(1).ToArray();
                    } else {
                        enumMembers = (
                            from em in typeInfo.EnumMembers.Values
                            where (em.Value != 0) &&
                                ((value & em.Value) == em.Value)
                            select em
                        ).ToArray();
                    }
                } else {
                    EnumMemberInfo em;
                    if (typeInfo.ValueToEnumMember.TryGetValue(value, out em))
                        enumMembers = new EnumMemberInfo[1] { em };
                }

                if ((enumMembers != null) && (enumMembers.Length > 0))
                    return new JSEnumLiteral(value, enumMembers);
                else {
                    switch (node.Code) {
                        case ILCode.Ldc_I4:
                            return new JSIntegerLiteral(value, typeof(int));
                        case ILCode.Ldc_I8:
                            return new JSIntegerLiteral(value, typeof(long));
                    }

                    throw new NotImplementedException();
                }
            } else if (typeName == "System.Boolean") {
                return JSLiteral.New(value != 0);
            } else if (typeName == "System.Char") {
                return JSLiteral.New((char)value);
            } else {
                switch (node.Code) {
                    case ILCode.Ldc_I4:
                        return new JSIntegerLiteral(value, typeof(int));
                    case ILCode.Ldc_I8:
                        return new JSIntegerLiteral(value, typeof(long));
                }

                throw new NotImplementedException();
            }
        }
 bool EnumMemberInfoComparer(EnumMemberInfo enumMemberInfo, string description, string id, string imageName, string name) {
     return description == enumMemberInfo.Description
         && (enumMemberInfo.Id == null) ? (id == null) : id == enumMemberInfo.Id.ToString()
         && (enumMemberInfo.Image == null) ? (imageName == null) : imageName == enumMemberInfo.Image.ToString()
         && enumMemberInfo.Name == name;
 }