Ejemplo n.º 1
0
 public static object FromString(string str, Type itemType)
 {
     try
     {
         itemType = (Nullable.GetUnderlyingType(itemType) ?? itemType);
         if (itemType.IsEnum)
         {
             try
             {
                 object obj = BackCompatibility.BackCompatibleEnum(itemType, str);
                 if (obj != null)
                 {
                     return(obj);
                 }
                 return(Enum.Parse(itemType, str));
             }
             catch (ArgumentException innerException)
             {
                 throw new ArgumentException("'" + str + "' is not a valid value for " + itemType + ". Valid values are: \n" + GenText.StringFromEnumerable(Enum.GetValues(itemType)), innerException);
             }
         }
         if (parsers.TryGetValue(itemType, out Func <string, object> value))
         {
             return(value(str));
         }
         if (!typeof(ISlateRef).IsAssignableFrom(itemType))
         {
             throw new ArgumentException("Trying to parse to unknown data type " + itemType.Name + ". Content is '" + str + "'.");
         }
         ISlateRef obj2 = (ISlateRef)Activator.CreateInstance(itemType);
         obj2.SlateRef = str;
         return(obj2);
     }
     catch (Exception innerException2)
     {
         throw new ArgumentException("Exception parsing " + itemType + " from \"" + str + "\"", innerException2);
     }
 }
Ejemplo n.º 2
0
        public void Set <T>(string name, T var, bool isAbsoluteName = false)
        {
            if (name.NullOrEmpty())
            {
                Log.Error("Tried to set a variable with null name. var=" + var.ToStringSafe());
                return;
            }
            if (!isAbsoluteName && !prefix.NullOrEmpty())
            {
                name = prefix + "/" + name;
            }
            name = QuestGenUtility.NormalizeVarPath(name);
            ISlateRef slateRef = var as ISlateRef;

            if (slateRef != null)
            {
                slateRef.TryGetConvertedValue(this, out object value);
                vars[name] = value;
            }
            else
            {
                vars[name] = var;
            }
        }