C# 反射属性类型

标签 c# reflection

我正在使用反射从匿名类型中获取值:

object value = property.GetValue(item, null);

当底层值为可空类型(T?)时,当值为空时如何获取底层类型?

给定

int? i = null;

type = FunctionX(i);
type == typeof(int); // true

正在寻找 FunctionX()。希望这是有道理的。谢谢。

最佳答案

你可以这样做:

if(type.IsgenericType)
{
   Type genericType = type.GetGenericArguments()[0];
}

编辑: 对于一般用途:

public Type GetTypeOrUnderlyingType(object o)
{
   Type type = o.GetType();
   if(!type.IsGenericType){return type;}
   return type.GetGenericArguments()[0];
}

用法:

int? i = null;

type = GetTypeOrUnderlyingType(i);
type == typeof(int); //true

这适用于任何泛型,而不仅仅是 Nullable。

关于C# 反射属性类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/802981/

相关文章:

reflection - 如何检查 'T 不允许为空的类型?

c# - 是否可以在 Unity 编辑器中选择性地阻止某些程序集的重新加载?

c# - Dynamics 365 - 使用 IOrganizationService 创建 OrganizationServiceProxy

c# - .NET 4.5 Quartz 作业未触发 Global.asax.cs Application_Start

java - 为什么反射慢?

java - 在 java 中编写合成/桥接方法

c# - 如何在应用程序设置过程中使用 C# 安装 ODBC 驱动程序?

c# - 引用项目的 Globals.ThisAddIn.Application 不是 Add-In

c# - 获取非继承属性

java - 如何打印一种 setter/getter