Undo, Redo 기능을 다시 만들고 있습니다. 람다 식 안에서는 ref를 못 쓴다거나 제네릭을 쓰면 포인터를 못 쓴다는것 등등 귀찮은 제약이 많아 깔끔하게 만들기가 힘드네요..
public class AutoWrite<T> { T value, memory; public AutoWrite(T ivalue) { value = ivalue; memory = ivalue; } public T Get() { return value; } public void Set(MyClass iowner, T ivalue, string name) { if (예외처리) { memory = value; value = ivalue; return; } //Undo, Redo 입력중- } } public class STAGE_INFO : MyClass { AutoWrite<int> _nLevel = new AutoWrite<int>(1); //AutoWrite<int> _nLevel = 1; 이렇게 초기화할 수 있도록 만들어주는 방법? public int nLevel { get { return _nLevel.Get(); } set { _nLevel.Set(this, value, "Set Level"); } } }
만약 저 클래스를 쓰지 않는다면
public class MyClass { //~~~ public void SetValue<T>(Action<T> action, T value, T memoryR, string name) { //예외처리, Undo, Redo 기록- } //~~~ }
public class STAGE_INFO : MyClass { int _nLevel = 1; public int nLevel { get { return _Enter_level; } set { SetValue((a) => _Enter_level = a, value, _Enter_level, "Set Enter_level"); } } }
이런식으로 매번 람다식을 적어줘야 되는데, 역시 겉보기에도 좀 이상하고 계속 적기도 귀찮아서 첫 번째 방법을 사용하려고 합니다. 주석부분(AutoWrite<int> _nLevel = 1;)처럼 제네릭으로 int를 받을 경우 int값으로 초기화할 수 있는 방법은 없을까요?