2011-11-23 114 views
0

升級Fax.NET項目.N​​ET 4的客戶端配置文件後,我得到這個例外:發生在這個函數的返回語句構造函數型「Microsoft.Win32.SafeHandles.SafeRegistryHandle」未找到

MissingMethodException: 
Constructor on type 'Microsoft.Win32.SafeHandles.SafeRegistryHandle' not found. 

例外:

private static SafeHandle CreateRegistrySafeHandle(IntPtr handle) 
{ 
    Type type; 

    type = typeof(SafeHandle).Assembly.GetType("Microsoft.Win32.SafeHandles.SafeRegistryHandle"); 

    return (SafeHandle)Activator.CreateInstance(
     type, 
     BindingFlags.Instance | BindingFlags.NonPublic, 
     null, 
     new object[] { handle, true }, 
     null); 
} 

這個例外的解決方案是什麼?

回答

0

自從.NET 4以來,SafeRegistryHandle Constructor是公開的(BindingFlags.Public),而不是內部或私有的(BindingFlags.NonPublic)。

如果你有機會獲得源代碼,你可以用

private static SafeHandle CreateRegistrySafeHandle(IntPtr handle) 
{ 
    return new SafeRegistryHandle(handle, true); 
} 
+0

我改成'BindingFlags.Public'替代方法,但仍然有這個異常! – Jalal

+0

更改'BindingFlags.Instance | BindingFlags.NonPublic'到'BindingFlags.Instance | BindingFlags.Public'它可以在我的機器上運行。 – dtb

+0

對不起!我的錯! 'RegistryKey'發生另一個相同的異常:'找不到'Microsoft.Win32.RegistryKey'類型的構造函數。':P – Jalal