Dreamine.MVVM.Core 1.0.13
중요: 자동 등록된 타입은 기본적으로 Singleton으로 등록됩니다. 따라서 자동 발견된 ViewModel, Model, Event, Manager는 애플리케이션이 별도 수명으로 명시 등록하지 않는 한 반복 해석 시 동일 인스턴스를 유지합니다.
로딩중...
검색중...
일치하는것 없음
AssemblyTypeScanner.cs
이 파일의 문서화 페이지로 가기
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Reflection;
5using Dreamine.MVVM.Interfaces.DependencyInjection;
6
8{
17 public sealed class AssemblyTypeScanner : IAssemblyTypeScanner
18 {
51 public IEnumerable<Assembly> GetCandidateAssemblies(Assembly rootAssembly)
52 {
53 if (rootAssembly is null)
54 {
55 throw new ArgumentNullException(nameof(rootAssembly));
56 }
57
58 return AppDomain.CurrentDomain
59 .GetAssemblies()
60 .Where(assembly => !assembly.IsDynamic && !string.IsNullOrWhiteSpace(assembly.FullName))
61 .Prepend(rootAssembly)
62 .Distinct();
63 }
64
97 public IEnumerable<Type> GetLoadableTypes(Assembly assembly)
98 {
99 if (assembly is null)
100 {
101 throw new ArgumentNullException(nameof(assembly));
102 }
103
104 try
105 {
106 return assembly.GetTypes();
107 }
108 catch (ReflectionTypeLoadException ex)
109 {
110 return ex.Types.Where(type => type is not null)!;
111 }
112 }
113 }
114}
IEnumerable< Type > GetLoadableTypes(Assembly assembly)
IEnumerable< Assembly > GetCandidateAssemblies(Assembly rootAssembly)