public Nullable <T> SetVariable <T>(string Path, string Keyword, int ParameterIndex, T value) where T : struct { PFSFile pfsFile = null; PFSKeyword pfsKeyword = null; if (!CheckAll(Path, Keyword, out pfsFile, out pfsKeyword)) { return(null); } try { switch (typeof(T).ToString()) { case "System.Boolean": { object obj = value; pfsKeyword.DeleteParameter(ParameterIndex); pfsKeyword.InsertNewParameterBool((bool)obj, ParameterIndex); object boolValue = pfsKeyword.GetParameter(ParameterIndex).ToBoolean(); pfsFile.Write(fi.FullName); pfsFile.Close(); return((T?)boolValue); } case "System.Double": { object obj = value; pfsKeyword.DeleteParameter(ParameterIndex); pfsKeyword.InsertNewParameterDouble((double)obj, ParameterIndex); object doubleValue = pfsKeyword.GetParameter(ParameterIndex).ToDouble(); pfsFile.Write(fi.FullName); pfsFile.Close(); return((T?)doubleValue); } case "System.Int32": case "System.Int64": { object obj = value; pfsKeyword.DeleteParameter(ParameterIndex); pfsKeyword.InsertNewParameterInt((int)obj, ParameterIndex); object intValue = pfsKeyword.GetParameter(ParameterIndex).ToInt(); pfsFile.Write(fi.FullName); pfsFile.Close(); return((T?)intValue); } case "System.Single": { object obj = value; pfsKeyword.DeleteParameter(ParameterIndex); pfsKeyword.InsertNewParameterDouble((float)obj, ParameterIndex); object singleValue = pfsKeyword.GetParameter(ParameterIndex).ToSingle(); pfsFile.Write(fi.FullName); pfsFile.Close(); return((T?)singleValue); } default: { return(null); } } } catch (Exception ex) { ErrorMessage = string.Format(CSSPDHIRes.ParameterIndex_DoesNotExistForSectionPath_AndKeyword_Error_, ParameterIndex, Path, Keyword, ex.Message + (ex.InnerException != null ? " Inner: " + ex.InnerException.Message : "")); OnCSSPDHIChanged(new CSSPDHIEventArgs(new CSSPDHIMessage("Error", -1, false, ErrorMessage))); pfsFile.Close(); return(null); } }