/// <summary> /// 通用版:從 "Key:Value" 這種字串中解析出 Value,並轉成 T 回傳。 /// </summary> /// <typeparam name="T"> /// 目標型別,只要能用 Convert.ChangeType 轉換就行(數值、string…) /// </typeparam> /// <param name="line">形如 "SomeKey:123.45" 或 "Foo:ABC" 的字串</param> private T ReadValueFromFile<T>(string line) { // 1) 切兩段 var parts = line.Split(':', 2); if (parts.Length < 2) throw new FormatException($"無法解析 '{line}',必須包含 ':'"); string valStr = parts[1]; // 2) 如果是字串,就直接回傳 if (typeof(T) == typeof(string)) return (T)(object)valStr; // 3) 其他型別交給 Convert.ChangeType return (T)Convert.ChangeType(valStr, typeof(T)); }
UInt16 u16 = ReadValueFromFile<UInt16>("ParamA:65535"); int i32 = ReadValueFromFile<int>( "ParamB:-12345"); float f = ReadValueFromFile<float>( "ParamC:3.14159"); ulong u64 = ReadValueFromFile<ulong>( "ParamD:9876543210"); string s = ReadValueFromFile<string>( "ParamE:Hello!");
private UInt16 ReadValueFromFileUint16(String para_line) { string[] astringee = null; UInt16 i; astringee = para_line.Split(':'); i = Convert.ToUInt16(astringee[1]); return i; } private Single ReadValueFromFileSingle(String para_line) { string[] astringee = null; Single i; astringee = para_line.Split(':'); i = Convert.ToSingle(astringee[1]); return i; } private ulong ReadValueFromFileUint64(String para_line) { string[] astringee = null; UInt64 i; astringee = para_line.Split(':'); i = Convert.ToUInt64(astringee[1]); return (ulong)i; } private long ReadValueFromFileInt64(String para_line) { string[] astringee = null; Int64 i; astringee = para_line.Split(':'); i = Convert.ToInt64(astringee[1]); return (long)i; } private int ReadValueFromFileInt32(String para_line) { Int32 _outValue; string[] astringee = null; astringee = para_line.Split(':'); _outValue = Convert.ToInt32(astringee[1]); return (int)(_outValue); } private UInt32 ReadValueFromFileUint32(String para_line) { UInt32 _outValue; string[] astringee = null; astringee = para_line.Split(':'); _outValue = Convert.ToUInt32(astringee[1]); return (uint)_outValue; } private Int16 ReadValueFromFileInt16(String para_line) { Int16 _outValue; string[] astringee = null; astringee = para_line.Split(':'); _outValue = Convert.ToInt16(astringee[1]); return _outValue; } private float ReadValueFromFileFloat(String para_line) { Double _outValue; string[] astringee = null; astringee = para_line.Split(':'); _outValue = Convert.ToDouble(astringee[1]); return (float)_outValue; } private byte ReadValueFromFileByte(String para_line) { byte _outValue; string[] astringee = null; astringee = para_line.Split(':'); _outValue = Convert.ToByte(astringee[1]); return _outValue; } private String ReadValueFromFileString(String para_line) { String _outValue; string[] astringee = null; astringee = para_line.Split(':'); _outValue = astringee[1]; return _outValue; }