방금 Caliburn.Micro를 사용하기 시작했고 모든 예제에서 메서드가 모두 공용이라는 것을 알았습니다. 내가 버튼을 클릭하면Caliburn.Micro와 일치시키기 위해 모든 메서드가 public이되어야합니다.
private void CloseMainWindow()
{
TryClose();
}
, 아무 일도 발생하지 않고 내가 중단 점을 때리지 마세요 : 내 VM에서
x:Name="CloseMainWindow"
내가 방법을 추가 : 내가 가진 버튼을 추가하여이를 테스트하기로 결정 하지만 내가 공용으로 메서드를 변경하면 작동합니다. 이것이 최선의 방법이라고 생각하지 않습니다.
모든 메서드에 대한 ICommand 속성을 만드는 것이 허용 가능한 솔루션일까요?
편집 : 위의 질문에 대한 답을 읽은 것만으로도 Caliburn.Micro에는 ICommands가 없으며 절대 없을 것입니다. 그래서 내 원래의 질문은 여전히 답변이 필요합니다. 왜 모든 것이 VM에 공개되어야하며 안전합니까?
죄송합니다. 나는 가능할 때마다 사적인 것을 가르쳐왔다. 나는 누군가가 당신의 방법에 접근 할 수 있고 당신이 그것을 공개한다면 의도하지 않았을 때 그것을 실행할 수 있다고 들었다. 변수 대신에 속성을 사용하는 이유와 동일합니다. 내가 너무 엄격하게 가르쳐 온 것이 맞습니까? 나는 아직도 배우고있다, 우리 모두는 아닌가요? –
API를 작성하는 경우 public 메소드는 private보다 신중하게 작성해야합니다. (EXE를 작성하는 경우에는 별 관심이 없지만 다른 사용자가 사용하려는 DLL의 경우는 중요합니다.) API가 구현 세부 사항 및 종속성을 노출하는 것을 원하지 않습니다. 예를 들어, 다른 "초기화"메소드를 먼저 호출하지 않은 경우 불어납니다. 하지만 당신은 사적인 사람과 그걸 가지고 도망 갈 수 있습니다. 그러나 버튼 클릭은 공개 메소드 (이미없는 경우)와 마찬가지로 사용자 지향적이므로 구현 세부 정보를 숨길 수 있습니다. –