我通过反射判断对象的属性,并继续处理每个属性的数据类型.以下是我的(精简)来源:

private void ExamineObject(object o)
{
  Type type = default(Type);
  Type propertyType = default(Type);
  PropertyInfo[] propertyInfo = null;

  type = o.GetType();

  propertyInfo = type.GetProperties(BindingFlags.GetProperty |
                                    BindingFlags.Public |
                                    BindingFlags.NonPublic |
                                    BindingFlags.Instance);
  // Loop over all properties
  for (int propertyInfoIndex = 0; propertyInfoIndex <= propertyInfo.Length - 1; propertyInfoIndex++)
  {
    propertyType = propertyInfo[propertyInfoIndex].PropertyType;
  }
}

我的问题是,我最近需要处理可空属性,但我不知道如何获取可空属性的类型.

推荐答案

可能的解决方案:

    propertyType = propertyInfo[propertyInfoIndex].PropertyType;
    if (propertyType.IsGenericType &&
        propertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
    {
      propertyType = propertyType.GetGenericArguments()[0];
    }

.net相关问答推荐

Docker镜像mcr.microsoft.com/dotnet/aspnet:8.0不能在Windows上构建

如何从标头中检索基本身份验证凭据?

是否有任何 x 次的 for 循环的更短/更简单的版本?

使用 EPPlus 时如何设置列类型

.net:System.Web.Mail 与 System.Net.Mail

如何将 NuGet 与 Visual C# Express 一起使用?

在安全处理异常时避免首次机会异常消息

在未安装 Visual Studio 的机器上使用 FUSLOGVW.EXE

解密 .NET clr20r3 异常参数 P1..P10

Iif 在 C# 中等效

一个接口是否应该继承另一个接口

何时何地使用 GetType() 或 typeof()?

log4net的正确使用方法(记录器命名)

List 是否保证项目将按照添加的顺序返回?

C# 中的 F# List.map 类似功能?

立即检测客户端与服务器套接字的断开连接

绑定在代码隐藏中定义的对象

将控制台输出镜像到文件

如何将我的应用程序窗口置于最前面?

枚举和匹配属性的 C# 命名约定