[C#] Generic Type의 다른 List를 만드는 Collection

7609 단어 C#tech
List,List,List......때로는 그것들을 하나의 Collection으로 정리하려고 합니다.그러나 각 List의 Generic Type이 다르기 때문에 Generic Colliction을 직접 사용할 수 없습니다.리스트는 안 된대.
따라서 Public의 읽기와 쓰기 함수는Generic에서 비Generic Collection을 만들어서 해결할 수 있습니다.
using System.Collections.Generic;

public sealed class ListCollection : IEnumerable
{
            readonly Dictionary<Type, IEnumerable> m_Lists = new Dictionary<Type, IEnumerable>();

            public void Add<T>(List<T> list)
            {
                m_Lists.Add(typeof(T), list);
            }

            public bool TryGetValue<T>(out List<T> list)
            {
                if (m_Lists.TryGetValue(typeof(T), out var enumerable))
                {
                    list = enumerable as List<T>;
                    return true;
                }
                else
                {
                    list = null;
                    return false;
                }
            }

            IEnumerator IEnumerable.GetEnumerator() => m_Lists.GetEnumerator();
}
초기 화자에 대응하기 때문에 다음과 같이 사용할 수 있다.
var lists = new ListCollection() { new List<float>(), new List<int>(), new List<string>() };
List<float> floats;
lists.TryGetValue(out floats);

좋은 웹페이지 즐겨찾기