[英]How to get value of a Nullable Type via reflection
使用反射我需要检索Nullable Type of DateTime
的值的值
我怎样才能做到这一点?
当我尝试propertyInfo.GetValue(object, null)
它不起作用。
谢谢
我的代码:
var propertyInfos = myClass.GetType().GetProperties();
foreach (PropertyInfo propertyInfo in propertyInfos)
{
object propertyValue= propertyInfo.GetValue(myClass, null);
}
propertyValue结果对于可空类型始终为null
反思和Nullable<T>
有点痛苦; 反射使用object
, Nullable<T>
对object
有特殊的装箱/拆箱规则。 所以当你有一个object
它不再是Nullable<T>
- 它是null
或值本身 。
即
int? a = 123, b = null;
object c = a; // 123 as a boxed int
object d = b; // null
这有时让它有点混乱, 并注意你无法从已装箱的空Nullable<T>
中获取原始T
,因为你所拥有的只是一个null
。
给出简单的类:
public class Foo
{
public DateTime? Bar { get; set; }
}
和代码:
Foo foo = new Foo();
foo.Bar = DateTime.Now;
PropertyInfo pi = foo.GetType().GetProperty("Bar");
object value = pi.GetValue(foo, null);
value具有null(如果.Bar为null)或DateTime值。 这部分内容对您不起作用?
我现在试过这个并且工作正常:
DateTime? d = DateTime.Now;
var dt = typeof(DateTime?);
Console.WriteLine(dt.GetMethod("ToString").Invoke(d, null));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.