「設定」クラスがあります。これには、使いやすさと set アクセサーを制限するためのプロパティがあります。10個以内なら簡単そうに見えたが、数が増えた。これらのプロパティを自動的に作成するには、次のような方法が必要です。
foreach(var property in SettingsList)
{
_settings.AddAutoProperty(property);
}
リフレクションに対処している可能性がありますが、効率的な解決策にたどり着けません。
プロパティ定義:
public bool cbNextExcCount
{
get { return (bool)this.GetValueById("cbNextExcCount"); }
}
public bool cbSaveOnChangeExc
{
get { return (bool)this.GetValueById("cbSaveOnChangeExc"); }
}
public bool cbAutoIncrement
{
get { return (bool)this.GetValueById("cbAutoIncrement"); }
}
public bool cbRememberOnExit
{
get { return (bool)this.GetValueById("cbRememberOnExit"); }
}
...etc.
UPDATE 要約すると、次のコードを書きました:
public IDictionary<string, object> Properties = new ExpandoObject();
private List<string> SettingsList = new List<string>
{
"cbNextExcCount",
"cbSaveOnChangeExc",
"cbAutoIncrement",
"cbRememberOnExit"
};
public void CreateProperties()
{
foreach (string SettingName in SettingsList)
{
Properties.Add(SettingName, () => this.GetValueById(SettingName));
}
}
しかし、私はエラーがあります() => this.GetValueById("cbNextExcCount"))
:
引数の型 'ラムダ式' は、パラメーターの型 'オブジェクト' に代入できません。
を保存できFunc<bool>
ますが、設定には bool 以外の型が含まれる場合があり、Func を使用すると、呼び出しが少し複雑になります。