이 중 아무것도 편집 할 필요가 없습니다. 컬렉션의 경우 ReadOnlyCollection을 사용하는 것이 분명해 보입니다. (필자는 컬렉션에서 항상 새로운 ReadOnlyCollection을 만드는 좋은 방법인지는 모르겠지만 비용이 많이 듭니까?)).조회 컬렉션 및 편집 할 항목을 보호하십시오.
public static class Lookups
{
private static Collection<MyBusinessObject> businessObjects;
// [...]
public static ReadOnlyCollection<MyBusinessObjects> BusinessObjects
{
get
{
return new ReadOnlyCollection<MyBusinessObject>(businessObjects);
}
}
// [...]
}
하지만 더 중요한 점은 컬렉션 내부의 항목은 어떻게해야합니까? 나는이 시험이 어떤 생각을 전달하기를 원합니 까?
[TestMethod]
public void Items_Should_Not_Be_Editable()
{
var businessObject = Lookups.BusinessObjects.First();
businessObject.Id = 1337;
Assert.AreNotEqual(1337, Lookups.BusinessObjects.First().Id);
}
그러나 이것은 "일반 통계"컬렉션의 두 번째 블록이 필요하다는 것을 의미합니다. 속성은 개인 ReadOnlyCollections를 참조하고 개인 ReadOnlyCollections는 비공개 컬렉션을 참조하며 비공개 컬렉션에 대해 업데이트됩니다. – timmkrause
내 코드가 업데이트되었습니다. ^^ 정적이라고 생각하지 않았습니다. readonlycollection에 관해서는 일반 컬렉션에 대한 래퍼이므로 읽기 전용이므로 올바른 것입니다. –
마지막 사항 : 나는 개인 설정 도구를 선호했을 것이다. 그러나 누가 나를 "새로운 것을 (S)"하는 것을 막을 까? 그것은 완전한 객체를 덮어 쓰고 인터페이스로는 불가능합니다. 당신은 제 의견에 동의하십니까? 나는 ... 정정 해. 내가 무언가를 가지고 있다면, 나는 여전히 "ISomething x = new Something();"을 할 수 있습니다. - 이것이 원래 객체를 덮어 씁니까? – timmkrause