ObservableCollection에 대해서

C#/Story|2019. 11. 2. 12:08

데이터 변경을 감지해서 처리해주는 로직에서 매 프레임마다 확인하는 건 비용이 비싸기 때문에
Observer 패턴을 사용해서 관심 있는 데이터가 해당 이벤트를 구독하는 방식을 많이 사용한다.
나는 ObservableData 클래스를 Generic 형식으로 작성해서 사용하고 있었는데
Collection에 Observer 패턴을 적용하고자 했으나 생각보다 고려해야 될 점이 많아 보류해두었다.
그래서 msdn을 확인하니 System.Collection.ObjectModel 네임스페이스에 ObservableCollection이 구현돼 있어 사용해보았다.

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;

public class Database {
    public ObservableCollection<int> list = new ObservableCollection<int>();
}
public class Test() {
    public static void Main() {
    	var db=new Database();
        db.list.CollectionChanged += (sender,args) => {
            if (args.Action==System.Collections.Specialized.NotifyCollectionChangedAction.Add) {
                //Added (args.NewItems[args.NewItems.Count - 1])
            }
            if(args.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove) {
               //Removed
            }
        }
    }
}

일단 검증된 Class 있다는건 반가웠지만 주로 Add,Remove에 대해서 Listening하기 위해서 사용될텐데

그 때문에 위와 같은 코드를 작성하는건 효율성도 떨어지고 직관적이지도 않은 것 같아

해당 클래스를 참조하여 간소화된 ObservableList와 ObservableDictionary를 작성할 예정이다.

'C# > Story' 카테고리의 다른 글

ObservableCollection에 대해서  (0) 2019.11.02
2차원 배열과 Matrix Class 제작  (0) 2019.09.23
yield 문과 Iterator에 대해서  (0) 2019.09.16

댓글()