繁体   English   中英

如何通过反射获得可空类型的值

[英]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>有点痛苦; 反射使用objectNullable<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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM