Szukałem jakiegoś kodu w debugerze powiązanym z mechanizmem Razor View i zauważyłem, że niektóre typy pojawiają się w debugerze z końcowym znakiem kropki na końcu nazwy typu, np .:Co oznacza końcowa kropka na typie C#?
{Nancy. ViewEngines.Razor.RazorViewEngine.}
Czy ktoś wie co to oznacza? Nie jest poprawna składnia, aby użyć go podczas określania rzutowania na obiekcie, więc jestem zaintrygowany tym, co wskazuje w debugerze.
EDIT: Zgodnie z wnioskiem @Damien_The_Unbeliever, zrzut ekranu zmiennej debugger:
a kod że patrzę na:
public TCompiledView GetOrAdd<TCompiledView>(
ViewLocationResult viewLocationResult, Func<ViewLocationResult, TCompiledView> valueFactory)
{
TCompiledView compiledView = default(TCompiledView);
compiledView = (TCompiledView)this.cache.GetOrAdd(viewLocationResult, x => valueFactory(x));
dać Nieco więcej, próbujemy dodać logowanie do naszej pamięci podręcznej Nancy View, aby zbadać sporadyczny problem z błędami kompilacji Razor Views, ale to nie jest tak istotne dla zadania jon.
Ta biblioteka automatycznie generuje kod. System.CodeDom jest widoczny, może jakiś Reflection.Emit gdzieś i jesteś w połowie drogi do wyjaśnienia. Wystarczy zgłosić raport błędu za pomocą [projektu] (https://github.com/NancyFx/Nancy/issues). –
Głupie wdrożenie 'ToString()' to moje przypuszczenie. Sprawdź go na rzeczywisty typ, który można zobaczyć w oknie zegarka. – leppie
@leppie 'ToString' prawdopodobnie daje coś w stylu' 'Nancy.ViewEngines.Razor.RazorViewEngine + <> c__DisplayClass1" 'lub podobne. Jest to zagnieżdżona klasa '<> c__DisplayClass1' wewnątrz typu' RazorViewEngine' w przestrzeni nazw 'Nancy.ViewEngines.Razor'. Zamiast wywoływania 'ToString()' debugger próbuje napisać zewnętrzną klasę, po której następuje kropka (nie plus znak), po której następuje wewnętrzna nazwa klasy. Zobacz zaktualizowaną odpowiedź Damiena. –