我一直在调试与 Razor View 引擎相关的代码,发现某些类型名称以点号结尾,例如:
{Nancy.ViewEngines.Razor.RazorViewEngine.}
有人知道这表示什么吗?在对象的强制类型转换中使用它不是有效的语法,我很想知道在调试器中它表示什么。
编辑:根据 @Damien_The_Unbeliever 的要求,调试器中变量的截图如下:
我正在查看的代码:
public TCompiledView GetOrAdd<TCompiledView>(
ViewLocationResult viewLocationResult, Func<ViewLocationResult, TCompiledView> valueFactory)
{
TCompiledView compiledView = default(TCompiledView);
compiledView = (TCompiledView)this.cache.GetOrAdd(viewLocationResult, x => valueFactory(x));
为了提供更多的背景信息,我们正在尝试向我们的Nancy视图缓存中添加日志记录,以调查Razor视图抛出编译错误的间歇性问题,但这与问题并不相关。
ToString()
实现是我的猜测。在观察窗口中查看实际类型。 - leppieToString
可能会返回类似"Nancy.ViewEngines.Razor.RazorViewEngine+<>c__DisplayClass1"
的内容。它是命名空间为Nancy.ViewEngines.Razor
中类型为RazorViewEngine
的嵌套类<>c__DisplayClass1
。调试器尝试写出外部类,后跟句点(而不是加号),然后是内部类名称,而不是调用ToString()
。请参见 Damien 更新的答案。 - Jeppe Stig Nielsen