이상적으로 삭제, 이름 바꾸기 작업이 개체에 속해서는 안되며 컨테이너에만 속해야합니다. 각 개체는 UI 표현 자체에 의해 생성 된 상황에 맞는 메뉴를 가지고 있기 때문에
내가 이렇게 할 이유는
"이름 바꾸기" "삭제"와 같은 옵션이다
가 여전히 컨테이너 작업 DeleteMe을 만들면
container.Delete(Object)
container.Rename(Object, String newName)
처럼 호출해야, 개체 자체에서 이름 바꾸기를, 당신은 일에 따라 개체를 만드는 컨테이너 등의 다른 컨테이너에 저장하는 데 사용할 수 없습니다. (또는 DeleteMe가 실패합니다.)
이제 삭제 핸들러가 컨테이너에서 객체를 삭제해야하는 요구 사항의 경우 command pattern . 예 :
DeleteCommand command = new DeleteCommand(); // Create new Command
CommandManager.Register(command); // Create CommandManager class that will have mechanism of registering command, and has reference to object container. method is something like command.Set(Object container)
command.Execute(this); // pass instance as parameter, and in the Execute it will be similar to container.Remove(parameter);
위 코드는 개요에 불과하며 요구 사항에 따라 사용자 지정할 수 있습니다. 다른 작업 (예 : 이름 바꾸기)은 비슷하게 추가 할 수 있습니다.
좋은 방법이 있습니까? 확실하지 않다. 그러나 [WeakReference] (http://msdn.microsoft.com/en-us/library/system.weakreference.aspx?ppud=4)를 악용 할 수있는 기회 인 것처럼 들립니다. – HABO