我已经看到以下代码的示例:
typeof(Type).GetTypeInfo().Assembly
Run Code Online (Sandbox Code Playgroud)
和...
typeof(Type).Assembly
Run Code Online (Sandbox Code Playgroud)
当我进行实验时,我看不出有什么不同。甚至智能感知也会返回相同的文档。第一种似乎更为普遍。有没有理由使用一个而不是另一个?
他们都做同样的事情。IIRC,在(几乎?)所有情况下Type.GetTypeInfo()都会返回。this
您会看到引用的原因type.GetTypeInfo().Assembly是该Type.Assembly属性以及许多其他反射成员不存在于 .NET Core 1.x 中。因此,如果您有使用反射的旧 .NET Framework 代码,则必须.GetTypeInfo()在各处进行洒水才能使其与 .NET Core 1.x 一起工作。
相同的代码继续适用于更现代版本的 .NET Core 和 .NET,但我怀疑许多人(例如我自己)并没有费心去删除所有现在冗余的GetTypeInfo()调用。