我目前正在处理C#中的反射。在:
Assembly.LoadFile(@"C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.7\System.Numerics.Vectors.dll").GetTypes()
我发现了以下内容:[System.Numerics.Matrix4x4],[System.Numerics.Matrix4x4+CanonicalBasis],[System.Numerics.Matrix4x4+VectorBasis]
(这些是从“System.Numerics.Vectors.dll”反射出的类型)
我知道Matrix4x4是一个结构体,但我找不到有关CanonicalBasis和VectorBasis的任何信息,也不知道在这种情况下“+”代表什么意思。
我进行了进一步的研究,另一个奇怪的事情是:
Assembly.LoadFile(@"C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.7\System.Numerics.Vectors.dll").GetType("System.Numerics.Matrix4x4+VectorBasis").FullName
"System.Numerics.Matrix4x4+VectorBasis"
但是:
Assembly.LoadFile(@"C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.7\System.Numerics.Vectors.dll").GetType("System.Numerics.Matrix4x4+VectorBasis").Name
"VectorBasis"
此外,当我浏览Matrix4x4+VectorBasis的成员时,有这样一个成员: [System.Numerics.Vector3* Element0]
它是类似于C++中的原始指针吗?还是其他东西?
P.S. 我是在C#交互式环境下进行的,但我不认为它对结果产生了任何影响。
GetNestedTypes
只会显示公共的嵌套类型。请参考我的答案。 - adjanGetNestedTypes(BindingFlags.Public | BindingFlags.NonPublic)
来获取 所有 嵌套类型。 - Lucas Trzesniewski+
)是在规范中定义的,还是只是当前编译器版本的惯例? - Bradley Uffner