次のような値を持つファイルがあります。
[Params]
Version=106
Monitor=0
SMode=10000000
Date=20120519
私のアセンブリには、次のようなこれらのフィールドに対応するプロパティがあります。
public static string Version { get; set; }
public static string Monitor { get; set; }
public static string SMode { get; set; }
public static DateTime Date { get; set; }
私は次のようにファイルを繰り返し処理しています (_params は、ファイルの [Params] セクションからの行を含む文字列リストです)。
foreach (string s in _params)
{
string[] values = s.Split('=');
}
値[0]の変数を見つけて、値[1]で設定するにはどうすればよいですか?
編集:
アッティラのおかげで、これが私の解決策になりました。ファイル内のテキストでプロパティ フィールドを見つけ、ファイルから値を設定しています。また、プロパティのデータ型に基づいて正しい型を設定しています。一部の文字列を変換して、DateTime データ型に変換する必要があります。
foreach (string s in _params)
{
string[] values = s.Split('=');
object myObject = values[0];
object myValue = values[1];
if (myObject.ToString() == "Date")
myValue = ConvertDateStringToDateTime(values[1]);
if (myObject.ToString() == "StartTime")
myValue = ConvertStartTimeStringToDateTime(values[1]);
if (myObject.ToString() == "Length")
myValue = ConvertLengthStringToTimeSpan(values[1]);
var type = typeof(HrmParams);
var field = type.GetProperty(myObject.ToString());
myValue = Convert.ChangeType(myValue, field.PropertyType);
field.SetValue(myObject, myValue, null);
}