2011-10-16 2 views
0

일반 IList<> 인터페이스를 구현해야하는 특수 컬렉션을 만들고 있습니다. 문제는 컬렉션이 비제 한 고정 크기IList처럼 작동하도록하는 것입니다. 사용자가 컬렉션에 개체를 삽입하거나 제거 할 수 없도록하고 싶습니다.C#에서 고정 sze 제네릭 IList를 구현하는 방법

IList 인터페이스는 어떤 이유로 IsFixedSize 속성을 구현하지 않습니다. 그렇다면 일반 IList 인터페이스로이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 그냥 Insert, RemoveRemoveAt 메서드를 NotImplementedException을 던져 보겠습니다. 나는 그걸로 괜찮을 것이지만 더 좋은 방법이 있습니까?

var myList = new List<string>(); 
var readonlyList = new ReadOnlyCollection<string>(myList); 
+0

적절한 언어로 태그를 지정하십시오 (C#?) –

답변

1

한 전형적인 방법은 실제로 IList에 일을 던져하지 않는 한 그들이 사람들에게 제공되지 않도록 명시 적으로 Add, InsertRemove 같은 IList의 잘못된 멤버를 구현하는 것입니다. 이것이 배열이하는 방식입니다.

+0

이것은 제가 취할 접근법입니다. 명시 적으로 노출하고 싶지 않은 멤버와 비공개 멤버를 구현합니다. 그렇게하면 사용자가 내 수업의 인스턴스 위로 마우스를 가져갈 때 IntelliSense에 표시되지 않습니다. –

1

당신은 내용 만 읽어하실 수 있습니다 IList<T>에 대한 래퍼입니다 ReadOnlyCollection<T>하지만이 추가 또는 삭제를 사용할 수 있습니다 'list'를 변경하려면 배열을 사용하십시오.

컬렉션을 편집 가능하게하지 않으려면 ReadOnlyCollection<T>을 사용하십시오.

2

당신이의 크기를 원하지 않는 경우 :

토니