Qui*_*Von 3 .net c# decompiling asp.net-core
这里是JustDecompile反编译的一个ASP.NET Core nuget包,我看不懂<>c.<>9. 我发现他们没有声明,很奇怪,Nuget包名是Microsoft.Extensions.FileProviders.Physical,类文件名是PhysicalFilesWatcher.
这是某些编译器生成的代码中某些标识符的一部分(C# 不允许开发人员在标识符名称<中使用and ,而IL允许)。C# 中有多种语言特性,可以通过编译器扩展为代码,例如,自动属性、>awaityield return闭包等。
UPD
在这种情况下,根据我的反编译,它似乎是编译器为此Actionlambda 生成的代码:
private static readonly Action<object> _cancelTokenSource = state => ((CancellationTokenSource)state).Cancel();
Run Code Online (Sandbox Code Playgroud)
它是通过如下方式在生成的静态构造函数中初始化的:
PhysicalFilesWatcher._cancelTokenSource = new Action<object>((object) PhysicalFilesWatcher.'<>c.<>9, __methodptr(<. cctor>b__43_0));
[CompilerGenerated]
[Serializable]
private sealed class <>c
{
public static readonly PhysicalFilesWatcher.<>c <>9;
static <>c()
{
PhysicalFilesWatcher.<>c <>9 = new PhysicalFilesWatcher.<>c();
}
public <>c()
{
base..ctor();
}
internal void <. cctor>b__43_0(object state)
{
((CancellationTokenSource) state).Cancel();
}
}
Run Code Online (Sandbox Code Playgroud)