private static bool TryFromInterface(
            object value,
            XInfo from,
            XInfo to,
            out object result,
            string format)
        {
            result = GetDefaultValue(to.Category);

            switch (to.Category)
            {
            case TypeCategory.Array:
                return(TryToArray(
                           from,
                           to,
                           value,
                           out result,
                           format
                           ));

            case TypeCategory.Interface:
                result = value;
                return(true);

            case TypeCategory.Enum:
            case TypeCategory.Class:
            case TypeCategory.Struct:
            case TypeCategory.Stream:
            case TypeCategory.Color:
            case TypeCategory.String:
            case TypeCategory.DateTime:
            case TypeCategory.Decimal:
            case TypeCategory.Boolean:
            case TypeCategory.Char:
            case TypeCategory.Byte:
            case TypeCategory.SByte:
            case TypeCategory.Int16:
            case TypeCategory.UInt16:
            case TypeCategory.Int32:
            case TypeCategory.UInt32:
            case TypeCategory.IntPtr:
            case TypeCategory.UIntPtr:
            case TypeCategory.Int64:
            case TypeCategory.UInt64:
            case TypeCategory.Single:
            case TypeCategory.Double:
            case TypeCategory.Null:
            case TypeCategory.Others:
            default:
                return(false);
            }
        }
Exemple #2
0
 public static void EnqueueRange(IEnumerable <ResearchProjectDef> techs)
 {
     foreach (var node in techs.OrderBy(x => XInfo.GetValue(ResearchNodesCache[x])).ThenBy(x => x.CostApparent).Select(x => ResearchNodesCache[x]))
     {
         if (AltRPal)
         {
             AppendSInfo.Invoke(null, new object[] { node });
         }
         else
         {
             EnqueueInfo.Invoke(MainTabInstance, new object[] { node, true });
         }
     }
 }
        private static bool TryFromStruct(
            object value,
            XInfo from,
            XInfo to,
            out object result,
            string format)
        {
            result = GetDefaultValue(to.Category);

            var str = value.ToString();

            if (from.Equals(to))
            {
                result = value;
                return(true);
            }

            switch (to.Category)
            {
            case TypeCategory.Struct:
            case TypeCategory.Class:
                var dic = GetValues(value);
                result = SetValues(dic, to.Type);
                return(true);

            case TypeCategory.Array:
            case TypeCategory.String:
            case TypeCategory.Stream:
            case TypeCategory.Color:
            case TypeCategory.Enum:
            case TypeCategory.DateTime:
            case TypeCategory.Boolean:
            case TypeCategory.Char:
            case TypeCategory.Decimal:
            case TypeCategory.Byte:
            case TypeCategory.SByte:
            case TypeCategory.Int16:
            case TypeCategory.UInt16:
            case TypeCategory.Int32:
            case TypeCategory.UInt32:
            case TypeCategory.Int64:
            case TypeCategory.UInt64:
            case TypeCategory.Single:
            case TypeCategory.Double:
                return(TryFromString(
                           str,
                           from,
                           to,
                           out result,
                           format
                           ));

            case TypeCategory.Interface:
            case TypeCategory.IntPtr:
            case TypeCategory.UIntPtr:
            case TypeCategory.Null:
            case TypeCategory.Others:
            default:
                return(false);
            }
        }