public void GetType<T>(T t) where T : class, new()
{
Type type = typeof(T);
PropertyInfo[] properties = type.GetProperties();
foreach (PropertyInfo property in properties)
{
string propertyName = property.Name;//属性名称
Type propertyType = property.PropertyType;//属性类型
object propertyValue = property.GetValue(t);//属性值
//判断propertyType是否为nullable泛型类型
if (propertyType.IsGenericType && propertyType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
{
//获取 Nullable<T> 中的 T 的实际类型
propertyType = propertyType.GetGenericArguments()[0];
#region 另一种获取实际类型的方法
//如果propertyType为nullable类,声明一个NullableConverter类,该类提供从Nullable类到基础基元类型的转换
//NullableConverter nullableConverter = new NullableConverter(propertyType);
//将propertyType转换为nullable对的基础基元类型
//propertyType = nullableConverter.UnderlyingType;
#endregion
}
Console.WriteLine($"Property Name: {propertyName}, Type: {propertyType.Name}, Value: {propertyValue}");
}
}
对你有帮助的话点个赞吧........................................................