言うまでもありませんが、これが問題です。
public static T WriteIfNotNull<T>(ManagementObject retObject, string parameter)
{
return retObject[parameter] != null ? (T)retObject[parameter] : default(T);
}
がオブジェクトである場合T
に壊れます。奇妙な部分(少なくとも私にとって)は、そうではなく、実際に指定されたintである場合、それが機能することです。int
retObject[parameter]
T
T
キャストできないと書いてありますT
(この場合でもT
)int
。
@編集:@dtbここに行きます:
Specified cast is not valid.
(T)(object)retObject[parameter] Cannot unbox 'retObject[parameter]' as a 'T' int
そして値:
パラメータ:"ProcessId"
retObject [パラメータ]:4
default(T):0
@@ Edit:これも電話です
pr.ProcessId = Util.WriteIfNotNull<int>(retObject, "ProcessId");