Asp.net核心等价于Type.IsAssignableFrom



以前我可以检查一个类型是否可以从另一个类型赋值。我需要在一个通用基类中使用它。

this.GetType().IsAssaignableFrom(otherObject.GetType())

如何在asp.net核心中实现同样的功能?

请在此处查看:https://blogs.msdn.microsoft.com/dotnet/2016/02/10/porting-to-net-core/。特别是关于"反射"的部分。

报价:

C#var成员=obj.GetType().GetMembers();

成为

C#正在使用System.Reflection。。。var成员=obj.GetType().GetTypeInfo().Get-Members();

显然,他们将在未来版本的.net core中重新引入它。你可以在它链接到Github上这个不存在的页面的页面上看到:https://github.com/dotnet/apireviews/tree/master/2016-01-19-reflection它显然描述了对反射名称空间的一系列更改。

随着.NET Native的出现,我们有了一项技术,可以将您的应用程序与框架和第三方依赖关系静态链接。为了使链接可行,重要的是它能够识别出框架中没有使用的部分。在其他技术中,如C++,这在某种程度上是简单的,因为这些系统没有反射等动态性。当然,.NET Native仍然支持反射,但我们想让平台更适合付费游戏,这意味着你不必为不使用的功能付费。对于反射来说尤其如此,因为它对运行时和编译器基于静态信息所能做的事情施加了重大限制。

因此,理想情况下,反射应该是.NET Core中的一个可选组件,您可能会决定根本不在应用程序中使用它。棘手的是System.Object通过Object.GetType()依赖于反射。为了打破这种依赖,我们决定System.Type不再代表全面的反射类型信息,而只代表类型名称。这意味着.NET Core中的System.Type不再包含GetMembers()等API,而是继续公开Name等API。

为了访问额外的类型信息,你必须调用一个名为GetTypeInfo()的扩展方法,该方法位于System.Reflection中。它返回新的类型TypeInfo,这就是type过去的类型。换句话说,一行代码如下:

C#var成员=obj.GetType().GetMembers();

成为

C#使用System.Reflection;。。。var成员=obj.GetType().GetTypeInfo().Get-members();

.Met博客

最新更新