话不多说,这就是问题所在:
public static T WriteIfNotNull<T>(ManagementObject retObject, string parameter)
{
return retObject[parameter] != null ? (T)retObject[parameter] : default(T);
}
T
当是一个int
并且retObject[parameter]
是一个对象时,它会中断。奇怪的部分(至少对我来说)是 ifT
不是T
并且实际上是一个指定的 int 它确实有效。
它说它不能被转换为T
(即使在这种情况下T
也是int
)。
@Edit:@dtb 在这里:
Specified cast is not valid.
(T)(object)retObject[parameter] Cannot unbox 'retObject[parameter]' as a 'T' int
和价值观:
范围:"ProcessId"
retObject [参数]:4
默认(T):0
@@Edit:这也是电话
pr.ProcessId = Util.WriteIfNotNull<int>(retObject, "ProcessId");