첨부 소스 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

▶ 특정 인터페이스를 구현한 모든 타입 구하기 예제

using System;
using System.Collections.Generic;

Assembly assembly = Assembly.LoadFrom(@"D:\\DevExpress.XtraEditors.v19.2.dll");

//Assembly[] assemblyArray = AppDomain.CurrentDomain.GetAssemblies();
  Assembly[] assemblyArray = new Assembly[] { assembly };

IEnumerable<Type> typeEnmerable = GetTypeEnumerable(assemblyArray, typeof(IList));

foreach(Type type in typeEnmerable)
{
    Console.WriteLine(type);
}

 

728x90

 

▶ 특정 인터페이스를 구현한 모든 타입 구하기

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

#region 타입 열거 가능형 구하기 - GetTypeEnumerable(assemblyEnmuerable, interfaceType)

/// <summary>
/// 타입 열거 가능형 구하기
/// </summary>
/// <param name="assemblyEnmuerable">어셈블리 열거 가능형</param>
/// <param name="interfaceType">인터페이스 타입</param>
/// <returns>타입 열거 가능형</returns>
public IEnumerable<Type> GetTypeEnumerable(IEnumerable<Assembly> assemblyEnmuerable, Type interfaceType)
{
    IEnumerable<Type> typeEnumerable = assemblyEnmuerable
        .SelectMany(x => x.GetTypes())
        .Where(y => interfaceType.IsAssignableFrom(y) && !y.IsInterface);

    return typeEnumerable;
}

#endregion
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요