2011-11-23 111 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