public static bool IsObject(string type, OpcodeLookup op) { CastInfo info = op.GetTypeCast("object"); if (info is null) { return(false); } else { return(info.From.Contains(type)); } }
//public static bool CanBeCasted(string from, string to, OpcodeLookup op) //{ // if ((IsNumType(from) && IsNumType(to)) || (op.GetTypeInfo(from).IsObject && op.GetTypeInfo(to).IsObject)) // { // return true; // } // // Check if this type supports casting // CastInfo info = op.GetTypeCast(to); // if (info != null) // { // List<string> casts = new List<string>(); // List<string> processedTypes = new List<string>(); // int addedTypes = info.From.Count; // casts.AddRange(info.From); // // Generate a list of all possible casts. // while (addedTypes > 0) // { // int added = 0; // string[] difference = casts.Except(processedTypes).ToArray(); // foreach (string cast in difference) // { // info = op.GetTypeCast(cast); // if (info != null) // { // foreach (var type in info.From) // { // if (!casts.Contains(type)) // { // casts.Add(type); // added++; // } // } // } // processedTypes.Add(cast); // } // addedTypes = added; // } // // Check if this generated list contains this cast. // return casts.Contains(from); // } // else // { // return false; // } //} public static bool CanBeCasted(string from, string to, OpcodeLookup op) { if ((IsNumType(from) && IsNumType(to)) || (op.GetTypeInfo(from).IsObject&& op.GetTypeInfo(to).IsObject)) { return(true); } CastInfo info = op.GetTypeCast(to); if (info is null) { return(false); } else { return(info.From.Contains(from)); } }