■ CollectionBase 클래스의 OnInsert/OnInsertComplete 메소드를 사용하는 방법을 보여준다.
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
using System; using System.Collections; namespace TestProject { /// <summary> /// 정수 컬렉션 /// </summary> public class IntegerCollection : CollectionBase { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Protected #region 추가시 처리하기 - OnInsert(index, sourceValue) /// <summary> /// 추가시 처리하기 /// </summary> /// <param name="index">인덱스</param> /// <param name="sourceValue">소스 값</param> protected override void OnInsert(int index, object sourceValue) { try { int value = Convert.ToInt32(sourceValue); Console.WriteLine("위치 {0}에 {1} 추가", index, value); Console.WriteLine("목록은 {0}개 항목을 갖습니다.", List.Count); } catch(FormatException formatException) { Console.WriteLine(new ArgumentException("인자 타입이 정수가 아닙니다.", "sourceValue", formatException)); } } #endregion #region 추가 완료시 처리하기 - OnInsertComplete(index, value) /// <summary> /// 추가 완료시 처리하기 /// </summary> /// <param name="index">인덱스</param> /// <param name="value">값</param> protected override void OnInsertComplete(int index, object value) { Console.WriteLine("위치 {0}에 {1} 추가 완료", index, value); Console.WriteLine("목록은 {0}개 항목을 갖습니다.", List.Count); } #endregion } /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { IntegerCollection collection = new IntegerCollection(); IList list = collection as IList; list.Insert(0, 100 ); list.Insert(1, 200 ); list.Insert(2, "테스트"); // 에러가 발생한다. Console.WriteLine(list[0]); Console.WriteLine(list[1]); } #endregion } } |