/// <summary>設定内容を用いてビューモデルを初期化します。</summary> /// <param name="setting">モデルで設定されたスクリプトの実行設定</param> public ScriptRoutineSettingViewModel(IScriptRoutineSetting setting) { InitEnabled = setting.InitEnabled; StartEnabled = setting.StartEnabled; MainEnabled = setting.MainEnabled; CloseEnabled = setting.CloseEnabled; RequestEnabled = setting.RequestEnabled; ScriptInterval = setting.ScriptInterval; AssignToSetting(setting); }
private void AssignToSetting(IScriptRoutineSetting setting) { //NOTE: プロパティの種類が多いときはDictionary使う方が若干見栄えがよく、 //リフレクではないのでスピードもそこそこ出る(ハズ) var reactions = new Dictionary<string, Action>() { { nameof(InitEnabled) , () => setting.InitEnabled = InitEnabled }, { nameof(StartEnabled), () => setting.StartEnabled = StartEnabled }, { nameof(MainEnabled), () => setting.MainEnabled = MainEnabled }, { nameof(CloseEnabled), () => setting.CloseEnabled = CloseEnabled }, { nameof(RequestEnabled), () => setting.RequestEnabled = RequestEnabled }, { nameof(ScriptInterval), () => setting.ScriptInterval = ScriptInterval } }; PropertyChanged += (_, e) => reactions[e.PropertyName](); PropertyChangedEventManager.AddHandler(setting, OnModelPropertyChanged, string.Empty); }
private void AssignToSetting(IScriptRoutineSetting setting) { //NOTE: プロパティの種類が多いときはDictionary使う方が若干見栄えがよく、 //リフレクではないのでスピードもそこそこ出る(ハズ) var reactions = new Dictionary <string, Action>() { { nameof(InitEnabled), () => setting.InitEnabled = InitEnabled }, { nameof(StartEnabled), () => setting.StartEnabled = StartEnabled }, { nameof(MainEnabled), () => setting.MainEnabled = MainEnabled }, { nameof(CloseEnabled), () => setting.CloseEnabled = CloseEnabled }, { nameof(RequestEnabled), () => setting.RequestEnabled = RequestEnabled }, { nameof(ScriptInterval), () => setting.ScriptInterval = ScriptInterval } }; PropertyChanged += (_, e) => reactions[e.PropertyName](); PropertyChangedEventManager.AddHandler(setting, OnModelPropertyChanged, string.Empty); }
/// <summary>設定オブジェクトとスクリプトの実行担当を受け取ってインスタンスを初期化します。</summary> /// <param name="reader">スクリプトが実行できるオブジェクト</param> /// <param name="setting">スクリプトの実行設定</param> /// <param name="characterName">キャラ名</param> public ScriptStateManager(IScriptReader reader, IScriptRoutineSetting setting, string characterName) { ScriptReader = reader; ScriptRoutineSetting = setting; _characterName = characterName; }