C\#매 거 진 목록 구현

4833 단어 c#매 거리스트
오늘 어떤 친구 가 나 에 게 ComboBox 가 Enum 을 어떻게 연결 하 느 냐 고 물 었 는데,사실은 그의 뜻 은 매 거 진 목록 으로 어떻게 전환 하 느 냐 는 것 이다.생각해 보 니 이것 은 정말 정상 적 인 수요 이다.그러나 나 는 잠시 옮 겨 다 니 는 것 만 생각 했다.그 는 귀 찮 게 생각 했다.그래서 나 는 인터넷 에서 찾 아 보 았 고 세 가지 방법 을 추출 했다.나중에 자주 사용 하 는 코드 도구 창고 에서 도 하나의 방법 을 보 았 다.그래서 모두 네 가지 방법 으로 나 뉘 었 다.기능 은 모두 똑 같 고 형식 이 다 르 기 때문에 지금 은 모두 에 게 공유 할 수 있다.

#region       

/// <summary>
///             
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value"></param>
/// <returns></returns>
public static List<T> GetEnumList<T>(this T value)
{
 var list = new List<T>();
 if (value is Enum)
 {
 var valData =Convert.ToInt32((T)Enum.Parse(typeof(T), value.ToString())) ;
 var tps =Enum.GetValues(typeof (T));

 list.AddRange(from object tp in tps where ((int)Convert.ToInt32((T)Enum.Parse(typeof(T), tp.ToString())) & valData) == valData select (T) tp);
 }

 return list;
}

/*      :https://www.codenong.com/17123548/ */

/// <summary>
///             ;
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value"></param>
/// <returns></returns>
public static List<T> GetEnumList<T>() where T : Enum
{
 List<T> list = Enum.GetValues(typeof(T)).OfType<T>().ToList();
 return list;
}

/*      :https://www.codenong.com/105372/ */

/// <summary>
/// Gets all items for an enum value.(            )
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value">The value.</param>
/// <returns></returns>
public static IEnumerable<T> GetAllItems<T>(this Enum value)
{
 foreach (object item in Enum.GetValues(typeof(T)))
 {
 yield return (T)item;
 }
}

/// <summary>
/// Gets all items for an enum type.(            )
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static IEnumerable<T> GetAllItems<T>() where T : struct
{
 foreach (object item in Enum.GetValues(typeof(T)))
 {
 yield return (T)item;
 }
}

#endregion
반환 값 유형 에 따라 1 과 2 는 1 조로,3 과 4 는 1 조로 할 수 있다.방법의 성질 에 따라 1 과 3 을 한 조로,2 와 4 를 한 조로 할 수도 있다.
1,2 다 돌아 와 요. List,3,4 는 모두 매 거 진 집합 으로 되 돌아 갑 니 다. IEnumerable,이것 도 옮 겨 다 니 거나 List 로 전환 하기에 편리 합 니 다.
1 과 3 은 모두 확장 방법 으로 매 거 진 대상 을 통 해 해당 하 는 매 거 진 유형의 모든 매 거 진 을 편리 하 게 얻 을 수 있 습 니 다.다만 업무 적 으로 볼 때 이러한 호출 의 도 는 명확 하지 않 습 니 다.2 와 4 는 모두 일반적인 정적 방법 으로 정적 클래스 호출 을 통 해 비교적 간결 하고 의도 가 명확 하 다.
아래,우 리 는 각각 모든 방법 에서 오른쪽 단 추 를 누 릅 니 다-유닛 테스트 를 만 듭 니 다:

최종 단원 테스트 코드 는 다음 과 같다.

[TestClass()]
public class EnumExtensionTests
{
 /// <summary>
 ///     
 /// </summary>
 enum ELanguage
 {
 CSharp = 0,
 Java = 1,
 VB = 2
 }

 /// <summary>
 ///     
 /// </summary>
 private ELanguage _eLanguage = ELanguage.CSharp;

 [TestMethod()]
 public void GetEnumListTest1()
 {
 List<ELanguage> list = _eLanguage.GetEnumList(); //            ;
 Assert.IsTrue(list.Count > 0);
 }

 [TestMethod()]
 public void GetEnumListTest()
 {
 List<ELanguage> list = EnumExtension.GetEnumList<ELanguage>(); //            ;
 Assert.IsTrue(list.Count > 0);
 }

 [TestMethod()]
 public void GetAllItemsTest()
 {
 var allItems = _eLanguage.GetAllItems<ELanguage>(); //            ;
 List<ELanguage> list = allItems.ToList();
 Assert.IsTrue(list.Count > 0);
 }

 [TestMethod()]
 public void GetAllItemsTest1()
 {
 var allItems = EnumExtension.GetAllItems<ELanguage>(); //            ;
 List <ELanguage> list = allItems.ToList();
 Assert.IsTrue(list.Count > 0);
 }
}
테스트 결 과 는 모두 통과 되 었 다.

마지막 으로 코드 주 소 를 드 립 니 다https://gitee.com/dlgcy/dotnetcodes/tree/dlgcy/DotNet.Utilities/ 매 거 
전재 하 다
이상 은 C\#매 거 진 목록 을 실현 하 는 상세 한 내용 입 니 다.c\#매 거 진 목록 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기