我正在尝试使用反射的可空布尔值。这些值来自DB,所以我必须保持它们相同。
这是我正在使用的代码。
public partial class PrinterConfigUC : UserControl
{
prtsetup Printer { get; set; }
public PrinterConfigUC(prtsetup printer)
{
InitializeComponent();
this.Printer = printer;
lblPrinterName.Text = Printer.prtname;
var properties = printer.GetType().GetProperties();
foreach (var prop in properties)
{
//In debug, a nullable bool had a type name of "Nullable`1"
if (prop.PropertyType.Name.Equals("Nullable`1"))
{
bool? tempBool = (bool?)prop.GetValue(prop, null);
}
}
}
如果我在bool? tempBool = (bool?)prop.GetValue(prop, null);
处设置一个断点并执行该行,程序将停止进一步执行并向我显示一个空白的winform。没有其他事情发生。没有错误消息,程序也不会崩溃,只是挂在那一行上。
答案 0 :(得分:0)
改变这个:
bool? tempBool = (bool?)prop.GetValue(prop, null);
要:
bool? tempBool = (bool?)prop.GetValue(printer, null);
GetValue的第一个arg是源代码,它是上例中的打印机,而不是属性元素。