Dreamine.MVVM.Core
1.0.13
중요: 자동 등록된 타입은 기본적으로 Singleton으로 등록됩니다. 따라서 자동 발견된 ViewModel, Model, Event, Manager는 애플리케이션이 별도 수명으로 명시 등록하지 않는 한 반복 해석 시 동일 인스턴스를 유지합니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
NamingConventionAutoRegistrationFilter.cs
이 파일의 문서화 페이지로 가기
1
using
System;
2
using
System.Linq;
3
using
Dreamine.MVVM.Interfaces.DependencyInjection;
4
5
namespace
Dreamine.MVVM.Core.AutoRegistration
6
{
15
public
sealed
class
NamingConventionAutoRegistrationFilter
: IAutoRegistrationFilter
16
{
49
public
bool
IsTarget
(Type type)
50
{
51
if
(type is
null
)
52
{
53
throw
new
ArgumentNullException(nameof(type));
54
}
55
56
if
(!
IsConcreteClass
(type))
57
{
58
return
false
;
59
}
60
61
string
name = type.Name;
62
string
fullName = type.FullName ??
string
.Empty;
63
64
return
HasExplicitDreamineRegistrationAttribute
(type) ||
65
name.EndsWith(
"Model"
, StringComparison.Ordinal) ||
66
name.EndsWith(
"Event"
, StringComparison.Ordinal) ||
67
IsManagerTarget
(name, fullName) ||
68
name.EndsWith(
"ViewModel"
, StringComparison.Ordinal) ||
69
fullName.Contains(
".xaml.ViewModel"
, StringComparison.Ordinal) ||
70
fullName.Contains(
".xaml.Model"
, StringComparison.Ordinal) ||
71
fullName.Contains(
".xaml.Event"
, StringComparison.Ordinal);
72
}
73
98
private
static
bool
IsConcreteClass
(Type type)
99
{
100
return
type.IsClass &&
101
!type.IsAbstract &&
102
!type.IsGenericTypeDefinition;
103
}
104
137
private
static
bool
IsManagerTarget
(
string
name,
string
fullName)
138
{
139
return
name.EndsWith(
"Manager"
, StringComparison.Ordinal) &&
140
(fullName.Contains(
".Managers."
, StringComparison.Ordinal) ||
141
fullName.Contains(
".xaml."
, StringComparison.Ordinal));
142
}
143
168
private
static
bool
HasExplicitDreamineRegistrationAttribute
(Type type)
169
{
170
return
type.GetCustomAttributes(inherit:
false
)
171
.Any(attribute => attribute.GetType().Name is
"DreamineRegisterAttribute"
or
"DreamineAutoRegisterAttribute"
);
172
}
173
}
174
}
Dreamine.MVVM.Core.AutoRegistration
Definition
AssemblyTypeScanner.cs:8
Dreamine.MVVM.Core.AutoRegistration.NamingConventionAutoRegistrationFilter
Definition
NamingConventionAutoRegistrationFilter.cs:16
Dreamine.MVVM.Core.AutoRegistration.NamingConventionAutoRegistrationFilter.IsManagerTarget
static bool IsManagerTarget(string name, string fullName)
Definition
NamingConventionAutoRegistrationFilter.cs:137
Dreamine.MVVM.Core.AutoRegistration.NamingConventionAutoRegistrationFilter.IsTarget
bool IsTarget(Type type)
Definition
NamingConventionAutoRegistrationFilter.cs:49
Dreamine.MVVM.Core.AutoRegistration.NamingConventionAutoRegistrationFilter.HasExplicitDreamineRegistrationAttribute
static bool HasExplicitDreamineRegistrationAttribute(Type type)
Definition
NamingConventionAutoRegistrationFilter.cs:168
Dreamine.MVVM.Core.AutoRegistration.NamingConventionAutoRegistrationFilter.IsConcreteClass
static bool IsConcreteClass(Type type)
Definition
NamingConventionAutoRegistrationFilter.cs:98
AutoRegistration
NamingConventionAutoRegistrationFilter.cs
다음에 의해 생성됨 :
1.17.0