Dreamine.MVVM.Locators 1.0.10
Dreamine.MVVM.Locators 프로젝트의 API와 구성 요소를 제공합니다.
로딩중...
검색중...
일치하는것 없음
Dreamine.MVVM.Locators.ViewNamingConvention 클래스 참조

더 자세히 ...

정적 Public 멤버 함수

static bool IsLikelyViewType (Type type)
static string[] GetViewModelTypeNameCandidates (Type viewType)
static string[] GetViewTypeNameCandidates (Type viewModelType)
static string[] GetViewTypeNameCandidates (string viewModelFullName)

정적 Private 멤버 함수

static string[] BuildViewModelCandidateNamespaces (string viewNamespace, string rootNamespace)
static string[] BuildViewCandidateNamespaces (string viewModelNamespace, string rootNamespace)
static IEnumerable< string > BuildNamespaceReplacementCandidates (string sourceNamespace, string replacement)
static IEnumerable< string > BuildViewNamespaceCandidatesFromViewModel (string sourceNamespace)
static IEnumerable< string > ReplaceNamespaceToken (string sourceNamespace, string from, string to)
static IEnumerable< string > ExpandParentNamespaces (string? ns)
static string GetRootNamespace (string ns)
static void AddIfNotEmpty (List< string > list, string? value)

정적 Private 속성

const string ViewModelsToken = "ViewModels"
const string ViewModelToken = "ViewModel"
const string ViewsToken = "Views"
const string ViewToken = "View"
const string PagesToken = "Pages"
const string PageModelsToken = "PageModels"
const string PageModelToken = "PageModel"
const string PageToken = "Page"
const string DotViewModelToken = ".ViewModel"
const string EmptyToken = ""

상세한 설명

View 및 ViewModel 타입 이름을 확인하기 위한 공통 명명 규칙을 제공합니다.

ViewNamingConvention.cs 파일의 15 번째 라인에서 정의되었습니다.

멤버 함수 문서화

◆ AddIfNotEmpty()

void Dreamine.MVVM.Locators.ViewNamingConvention.AddIfNotEmpty ( List< string > list,
string? value )
inlinestaticprivate

값이 비어 있지 않을 때만 목록에 추가합니다.

매개변수
list값을 추가할 목록입니다.
value조건부로 추가할 값입니다.

ViewNamingConvention.cs 파일의 746 번째 라인에서 정의되었습니다.

747 {
748 if (!string.IsNullOrWhiteSpace(value))
749 {
750 list.Add(value);
751 }
752 }

다음에 의해서 참조됨 : BuildViewCandidateNamespaces(), BuildViewModelCandidateNamespaces(), GetViewModelTypeNameCandidates(), GetViewTypeNameCandidates().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ BuildNamespaceReplacementCandidates()

IEnumerable< string > Dreamine.MVVM.Locators.ViewNamingConvention.BuildNamespaceReplacementCandidates ( string sourceNamespace,
string replacement )
inlinestaticprivate

알려진 View 관련 네임스페이스 토큰을 지정한 토큰으로 바꾼 후보를 열거합니다.

매개변수
sourceNamespace원본 네임스페이스입니다.
replacement적용할 대체 토큰입니다.
반환값
바뀐 네임스페이스 후보 시퀀스입니다.

ViewNamingConvention.cs 파일의 488 번째 라인에서 정의되었습니다.

489 {
490 if (string.IsNullOrWhiteSpace(sourceNamespace))
491 {
492 yield break;
493 }
494
495 string[] tokens =
496 [
497 "Views",
498 "View",
499 "Pages",
500 "Page",
501 "Windows",
502 "Window",
503 "Dialogs",
504 "Dialog",
505 "GUI",
506 "GUIs",
507 "Screens",
508 "Screen",
509 "Controls",
510 "Control"
511 ];
512
513 foreach (string token in tokens)
514 {
515 foreach (string candidate in ReplaceNamespaceToken(sourceNamespace, token, replacement))
516 {
517 yield return candidate;
518 }
519 }
520 }

다음을 참조함 : ReplaceNamespaceToken().

다음에 의해서 참조됨 : BuildViewModelCandidateNamespaces().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ BuildViewCandidateNamespaces()

string[] Dreamine.MVVM.Locators.ViewNamingConvention.BuildViewCandidateNamespaces ( string viewModelNamespace,
string rootNamespace )
inlinestaticprivate

ViewModel 네임스페이스에서 View 검색용 네임스페이스 후보를 만듭니다.

매개변수
viewModelNamespace원본 ViewModel 네임스페이스입니다.
rootNamespace루트 네임스페이스입니다.
반환값
중복이 제거된 네임스페이스 후보 배열입니다.

ViewNamingConvention.cs 파일의 421 번째 라인에서 정의되었습니다.

422 {
423 List<string> results = [];
424
425 AddIfNotEmpty(results, viewModelNamespace);
426
427 foreach (string candidate in BuildViewNamespaceCandidatesFromViewModel(viewModelNamespace))
428 {
429 AddIfNotEmpty(results, candidate);
430 }
431
432 foreach (string parentNs in ExpandParentNamespaces(viewModelNamespace))
433 {
434 AddIfNotEmpty(results, $"{parentNs}.Views");
435 AddIfNotEmpty(results, $"{parentNs}.View");
436 AddIfNotEmpty(results, $"{parentNs}.Pages");
437 AddIfNotEmpty(results, $"{parentNs}.GUI");
438 AddIfNotEmpty(results, $"{parentNs}.GUIs");
439 AddIfNotEmpty(results, $"{parentNs}.Dialogs");
440 AddIfNotEmpty(results, $"{parentNs}.Screens");
441 AddIfNotEmpty(results, parentNs);
442 }
443
444 AddIfNotEmpty(results, $"{rootNamespace}.Views");
445 AddIfNotEmpty(results, $"{rootNamespace}.View");
446 AddIfNotEmpty(results, $"{rootNamespace}.Pages");
447 AddIfNotEmpty(results, $"{rootNamespace}.GUI");
448 AddIfNotEmpty(results, $"{rootNamespace}.GUIs");
449 AddIfNotEmpty(results, $"{rootNamespace}.Dialogs");
450 AddIfNotEmpty(results, $"{rootNamespace}.Screens");
451 AddIfNotEmpty(results, rootNamespace);
452
453 return [.. results.Distinct(StringComparer.Ordinal)];
454 }

다음을 참조함 : AddIfNotEmpty(), BuildViewNamespaceCandidatesFromViewModel(), ExpandParentNamespaces().

다음에 의해서 참조됨 : GetViewTypeNameCandidates().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ BuildViewModelCandidateNamespaces()

string[] Dreamine.MVVM.Locators.ViewNamingConvention.BuildViewModelCandidateNamespaces ( string viewNamespace,
string rootNamespace )
inlinestaticprivate

View 네임스페이스에서 ViewModel 검색용 네임스페이스 후보를 만듭니다.

매개변수
viewNamespace원본 View 네임스페이스입니다.
rootNamespace루트 네임스페이스입니다.
반환값
중복이 제거된 네임스페이스 후보 배열입니다.

ViewNamingConvention.cs 파일의 366 번째 라인에서 정의되었습니다.

367 {
368 List<string> results = [];
369
370 AddIfNotEmpty(results, viewNamespace);
371
372 foreach (string candidate in BuildNamespaceReplacementCandidates(viewNamespace, ViewModelsToken))
373 {
374 AddIfNotEmpty(results, candidate);
375 }
376
377 foreach (string parentNs in ExpandParentNamespaces(viewNamespace))
378 {
379 AddIfNotEmpty(results, $"{parentNs}.ViewModels");
380 AddIfNotEmpty(results, parentNs);
381 }
382
383 AddIfNotEmpty(results, $"{rootNamespace}.ViewModels");
384 AddIfNotEmpty(results, rootNamespace);
385
386 return [.. results.Distinct(StringComparer.Ordinal)];
387 }

다음을 참조함 : AddIfNotEmpty(), BuildNamespaceReplacementCandidates(), ExpandParentNamespaces(), ViewModelsToken.

다음에 의해서 참조됨 : GetViewModelTypeNameCandidates().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ BuildViewNamespaceCandidatesFromViewModel()

IEnumerable< string > Dreamine.MVVM.Locators.ViewNamingConvention.BuildViewNamespaceCandidatesFromViewModel ( string sourceNamespace)
inlinestaticprivate

ViewModel 네임스페이스에서 여러 View 네임스페이스 후보를 열거합니다.

매개변수
sourceNamespace원본 ViewModel 네임스페이스입니다.
반환값
View 네임스페이스 후보 시퀀스입니다.

ViewNamingConvention.cs 파일의 546 번째 라인에서 정의되었습니다.

547 {
548 if (string.IsNullOrWhiteSpace(sourceNamespace))
549 {
550 yield break;
551 }
552
553 string[] replacements =
554 [
555 "Views",
556 "View",
557 "Pages",
558 "Page",
559 "Windows",
560 "Window",
561 "Dialogs",
562 "Dialog",
563 "GUI",
564 "GUIs",
565 "Screens",
566 "Screen",
567 "Controls",
568 "Control"
569 ];
570
571 foreach (string replacement in replacements)
572 {
573 foreach (string candidate in ReplaceNamespaceToken(sourceNamespace, ViewModelsToken, replacement))
574 {
575 yield return candidate;
576 }
577 }
578 }

다음을 참조함 : ReplaceNamespaceToken(), ViewModelsToken.

다음에 의해서 참조됨 : BuildViewCandidateNamespaces().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ExpandParentNamespaces()

IEnumerable< string > Dreamine.MVVM.Locators.ViewNamingConvention.ExpandParentNamespaces ( string? ns)
inlinestaticprivate

지정한 네임스페이스의 부모 네임스페이스를 가까운 순서대로 반환합니다.

매개변수
ns확장할 네임스페이스입니다.
반환값
부모 네임스페이스 시퀀스입니다.

ViewNamingConvention.cs 파일의 659 번째 라인에서 정의되었습니다.

660 {
661 if (string.IsNullOrWhiteSpace(ns))
662 {
663 return Array.Empty<string>();
664 }
665
666 List<string> results = [];
667 string current = ns;
668
669 while (!string.IsNullOrWhiteSpace(current))
670 {
671 int lastDot = current.LastIndexOf('.');
672 if (lastDot < 0)
673 {
674 break;
675 }
676
677 current = current[..lastDot];
678 if (!string.IsNullOrWhiteSpace(current))
679 {
680 results.Add(current);
681 }
682 }
683
684 return results;
685 }

다음에 의해서 참조됨 : BuildViewCandidateNamespaces(), BuildViewModelCandidateNamespaces().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetRootNamespace()

string Dreamine.MVVM.Locators.ViewNamingConvention.GetRootNamespace ( string ns)
inlinestaticprivate

전체 네임스페이스에서 첫 번째 루트 구간을 가져옵니다.

매개변수
ns전체 네임스페이스입니다.
반환값
루트 구간이며 입력이 비어 있으면 빈 문자열입니다.

ViewNamingConvention.cs 파일의 711 번째 라인에서 정의되었습니다.

712 {
713 if (string.IsNullOrWhiteSpace(ns))
714 {
715 return string.Empty;
716 }
717
718 int index = ns.IndexOf('.');
719 return index < 0 ? ns : ns[..index];
720 }

다음에 의해서 참조됨 : GetViewModelTypeNameCandidates(), GetViewTypeNameCandidates().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetViewModelTypeNameCandidates()

string[] Dreamine.MVVM.Locators.ViewNamingConvention.GetViewModelTypeNameCandidates ( Type viewType)
inlinestatic

지정한 View 타입에 대응하는 ViewModel 전체 타입 이름 후보를 만듭니다.

매개변수
viewTypeView 타입입니다.
반환값
구체적인 순서대로 정렬되고 중복이 제거된 ViewModel 전체 이름 후보입니다.
예외
ArgumentNullExceptionviewTypenull인 경우 발생합니다.

ViewNamingConvention.cs 파일의 192 번째 라인에서 정의되었습니다.

193 {
194 ArgumentNullException.ThrowIfNull(viewType);
195
196 string viewName = viewType.Name;
197 string viewNamespace = viewType.Namespace ?? string.Empty;
198 string rootNamespace = GetRootNamespace(viewNamespace);
199 string candidateViewModelName = $"{viewName}ViewModel";
200
201 List<string> results = [];
202
203 foreach (string ns in BuildViewModelCandidateNamespaces(viewNamespace, rootNamespace))
204 {
205 AddIfNotEmpty(results, string.IsNullOrWhiteSpace(ns)
206 ? candidateViewModelName
207 : $"{ns}.{candidateViewModelName}");
208 }
209
210 AddIfNotEmpty(results, candidateViewModelName);
211
212 return [.. results.Distinct(StringComparer.Ordinal)];
213 }

다음을 참조함 : AddIfNotEmpty(), BuildViewModelCandidateNamespaces(), GetRootNamespace().

다음에 의해서 참조됨 : Dreamine.MVVM.Locators.ViewModelLocator.FindViewModelType().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetViewTypeNameCandidates() [1/2]

string[] Dreamine.MVVM.Locators.ViewNamingConvention.GetViewTypeNameCandidates ( string viewModelFullName)
inlinestatic

ViewModel 전체 타입 이름에서 View 전체 타입 이름 후보를 만듭니다.

매개변수
viewModelFullNameViewModel의 전체 타입 이름입니다.
반환값
중복과 원래 이름이 제거된 View 전체 이름 후보입니다.
예외
ArgumentExceptionviewModelFullName 이 비어 있거나 공백인 경우 발생합니다.

ViewNamingConvention.cs 파일의 307 번째 라인에서 정의되었습니다.

308 {
309 if (string.IsNullOrWhiteSpace(viewModelFullName))
310 {
311 throw new ArgumentException("ViewModel full name must not be empty.", nameof(viewModelFullName));
312 }
313
314 string[] candidates =
315 [
316 viewModelFullName.Replace(ViewModelsToken, ViewsToken).Replace(ViewModelToken, ViewToken),
317 viewModelFullName.Replace(ViewModelsToken, ViewsToken).Replace(ViewModelToken, EmptyToken),
318 viewModelFullName.Replace(ViewModelsToken, PagesToken).Replace(ViewModelToken, ViewToken),
319 viewModelFullName.Replace(ViewModelsToken, PagesToken).Replace(ViewModelToken, EmptyToken),
320 viewModelFullName.Replace(DotViewModelToken, EmptyToken),
321 viewModelFullName.Replace(DotViewModelToken, ViewToken),
322 viewModelFullName.Replace(PageModelsToken, PagesToken).Replace(PageModelToken, PageToken),
323 viewModelFullName.Replace(PageModelsToken, PagesToken).Replace(PageModelToken, EmptyToken)
324 ];
325
326 return candidates
327 .Where(candidate => !string.IsNullOrWhiteSpace(candidate))
328 .Where(candidate => !string.Equals(candidate, viewModelFullName, StringComparison.Ordinal))
329 .Where(candidate => !candidate.EndsWith(ViewModelToken, StringComparison.Ordinal))
330 .Distinct(StringComparer.Ordinal)
331 .ToArray();
332 }

다음을 참조함 : DotViewModelToken, EmptyToken, PageModelsToken, PageModelToken, PagesToken, PageToken, ViewModelsToken, ViewModelToken, ViewsToken, ViewToken.

◆ GetViewTypeNameCandidates() [2/2]

string[] Dreamine.MVVM.Locators.ViewNamingConvention.GetViewTypeNameCandidates ( Type viewModelType)
inlinestatic

지정한 ViewModel 타입에 대응하는 View 전체 타입 이름 후보를 만듭니다.

매개변수
viewModelTypeViewModel 타입입니다.
반환값
구체적인 순서대로 정렬된 View 전체 이름 후보이며 명명 규칙이 맞지 않으면 빈 배열입니다.
예외
ArgumentNullExceptionviewModelTypenull인 경우 발생합니다.

ViewNamingConvention.cs 파일의 247 번째 라인에서 정의되었습니다.

248 {
249 ArgumentNullException.ThrowIfNull(viewModelType);
250
251 string viewModelName = viewModelType.Name;
252 if (!viewModelName.EndsWith(ViewModelToken, StringComparison.Ordinal))
253 {
254 return [];
255 }
256
257 string viewName = viewModelName[..^ViewModelToken.Length];
258 string viewModelNamespace = viewModelType.Namespace ?? string.Empty;
259 string rootNamespace = GetRootNamespace(viewModelNamespace);
260
261 List<string> results = [];
262
263 foreach (string ns in BuildViewCandidateNamespaces(viewModelNamespace, rootNamespace))
264 {
265 AddIfNotEmpty(results, string.IsNullOrWhiteSpace(ns)
266 ? viewName
267 : $"{ns}.{viewName}");
268 }
269
270 AddIfNotEmpty(results, viewName);
271
272 return [.. results.Distinct(StringComparer.Ordinal)];
273 }

다음을 참조함 : AddIfNotEmpty(), BuildViewCandidateNamespaces(), GetRootNamespace(), ViewModelToken.

다음에 의해서 참조됨 : Dreamine.MVVM.Locators.ViewModelLocator.FindViewType().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ IsLikelyViewType()

bool Dreamine.MVVM.Locators.ViewNamingConvention.IsLikelyViewType ( Type type)
inlinestatic

지정한 타입이 알려진 View 명명 패턴에 해당하는지 판단합니다.

매개변수
type검사할 타입입니다.
반환값
알려진 View 명명 패턴과 일치하면 true입니다.
예외
ArgumentNullExceptiontypenull인 경우 발생합니다.

ViewNamingConvention.cs 파일의 140 번째 라인에서 정의되었습니다.

141 {
142 ArgumentNullException.ThrowIfNull(type);
143
144 if (!type.IsClass || type.IsAbstract)
145 {
146 return false;
147 }
148
149 string name = type.Name;
150
151 return name.EndsWith("Window", StringComparison.Ordinal)
152 || name.EndsWith("Page", StringComparison.Ordinal)
153 || name.EndsWith("View", StringComparison.Ordinal)
154 || name.EndsWith("Control", StringComparison.Ordinal)
155 || name.EndsWith("Dialog", StringComparison.Ordinal)
156 || name.EndsWith("Screen", StringComparison.Ordinal)
157 || name.EndsWith("Panel", StringComparison.Ordinal);
158 }

다음에 의해서 참조됨 : Dreamine.MVVM.Locators.ViewModelLocator.RegisterAll().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ReplaceNamespaceToken()

IEnumerable< string > Dreamine.MVVM.Locators.ViewNamingConvention.ReplaceNamespaceToken ( string sourceNamespace,
string from,
string to )
inlinestaticprivate

네임스페이스의 중간 또는 마지막 토큰이 일치하면 이를 바꾼 값을 열거합니다.

매개변수
sourceNamespace원본 네임스페이스입니다.
from찾을 토큰입니다.
to대체 토큰입니다.
반환값
토큰이 바뀐 네임스페이스 시퀀스입니다.

ViewNamingConvention.cs 파일의 620 번째 라인에서 정의되었습니다.

621 {
622 string middleToken = $".{from}.";
623 if (sourceNamespace.Contains(middleToken, StringComparison.Ordinal))
624 {
625 yield return sourceNamespace.Replace(middleToken, $".{to}.", StringComparison.Ordinal);
626 }
627
628 string endToken = $".{from}";
629 if (sourceNamespace.EndsWith(endToken, StringComparison.Ordinal))
630 {
631 yield return sourceNamespace[..^from.Length] + to;
632 }
633 }

다음에 의해서 참조됨 : BuildNamespaceReplacementCandidates(), BuildViewNamespaceCandidatesFromViewModel().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ DotViewModelToken

const string Dreamine.MVVM.Locators.ViewNamingConvention.DotViewModelToken = ".ViewModel"
staticprivate

Dot View Model Token 값을 보관합니다.

ViewNamingConvention.cs 파일의 97 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetViewTypeNameCandidates().

◆ EmptyToken

const string Dreamine.MVVM.Locators.ViewNamingConvention.EmptyToken = ""
staticprivate

Empty Token 값을 보관합니다.

ViewNamingConvention.cs 파일의 106 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetViewTypeNameCandidates().

◆ PageModelsToken

const string Dreamine.MVVM.Locators.ViewNamingConvention.PageModelsToken = "PageModels"
staticprivate

Page Models Token 값을 보관합니다.

ViewNamingConvention.cs 파일의 70 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetViewTypeNameCandidates().

◆ PageModelToken

const string Dreamine.MVVM.Locators.ViewNamingConvention.PageModelToken = "PageModel"
staticprivate

Page Model Token 값을 보관합니다.

ViewNamingConvention.cs 파일의 79 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetViewTypeNameCandidates().

◆ PagesToken

const string Dreamine.MVVM.Locators.ViewNamingConvention.PagesToken = "Pages"
staticprivate

Pages Token 값을 보관합니다.

ViewNamingConvention.cs 파일의 61 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetViewTypeNameCandidates().

◆ PageToken

const string Dreamine.MVVM.Locators.ViewNamingConvention.PageToken = "Page"
staticprivate

Page Token 값을 보관합니다.

ViewNamingConvention.cs 파일의 88 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetViewTypeNameCandidates().

◆ ViewModelsToken

const string Dreamine.MVVM.Locators.ViewNamingConvention.ViewModelsToken = "ViewModels"
staticprivate

View Models Token 값을 보관합니다.

ViewNamingConvention.cs 파일의 25 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : BuildViewModelCandidateNamespaces(), BuildViewNamespaceCandidatesFromViewModel(), GetViewTypeNameCandidates().

◆ ViewModelToken

const string Dreamine.MVVM.Locators.ViewNamingConvention.ViewModelToken = "ViewModel"
staticprivate

View Model Token 값을 보관합니다.

ViewNamingConvention.cs 파일의 34 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetViewTypeNameCandidates(), GetViewTypeNameCandidates().

◆ ViewsToken

const string Dreamine.MVVM.Locators.ViewNamingConvention.ViewsToken = "Views"
staticprivate

Views Token 값을 보관합니다.

ViewNamingConvention.cs 파일의 43 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetViewTypeNameCandidates().

◆ ViewToken

const string Dreamine.MVVM.Locators.ViewNamingConvention.ViewToken = "View"
staticprivate

View Token 값을 보관합니다.

ViewNamingConvention.cs 파일의 52 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetViewTypeNameCandidates().


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: