すべてのコードを単一のクラス (またはネストされたクラス) に配置する必要があるソフトウェアのプラグインを作成しています...
私がやりたいことは、_data
オブジェクトのネストされたプロパティへの変更を処理できるメソッドを作成し、ダーティ フラグを設定するなどの操作を行う中心的な場所を提供して、後で保存できるようにすることです。
以下は、私のファイルの構造を示すコードです。下部には、私が達成しようとしていることのアイデアを与えることができる 2 つの疑似メソッドがあります。
public class SomePlugin
{
private DataObject _data;
private bool _dataIsDirty = false;
private class DataObject
{
public GeneralSettings Settings { get; set; }
}
private class GeneralSettings
{
public string SettingOne { get; set; }
public string SettingTwo { get; set; }
}
protected override void Init()
{
_data = new DataObject
{
Settings = new GeneralSettings
{
SettingOne = "Example value one.",
SettingTwo = "Example value two."
}
}
}
// These are pseudo-methods illustrating what I'm trying to do.
private void SetData<t>(T ref instanceProperty, T newValue)
{
if (newValue == null) throw new ArgumentNullException("newValue");
if (instanceProperty == newValue) return;
instanceProperty = newValue;
_dataIsDirty = true;
}
private void SomeOtherMethod()
{
SetData(_data.Settings.SettingOne, "Updated value one.");
}
}