.net 3.5 能否将.net 3.5操作或Func用作封送的非托管委托?

.net 3.5 能否将.net 3.5操作或Func用作封送的非托管委托?,.net-3.5,delegates,pinvoke,marshalling,anonymous-methods,.net 3.5,Delegates,Pinvoke,Marshalling,Anonymous Methods,读后 我一直在试图修改代码,以符合我的喜好。我创建了一个实现idisposable的类来包装加载调用,并在需要时释放它们。但是,如果可以使用匿名委托,我似乎无法理解语法 var loaded=DynamicLibraryLoader.TryLoad("User32.dll"); var beeper=loaded.GetProcAddress("MessageBeep"); var type=typeof(Action<UInt32>); Action<UInt32> b

读后

我一直在试图修改代码,以符合我的喜好。我创建了一个实现idisposable的类来包装加载调用,并在需要时释放它们。但是,如果可以使用匿名委托,我似乎无法理解语法

var loaded=DynamicLibraryLoader.TryLoad("User32.dll");
var beeper=loaded.GetProcAddress("MessageBeep");
var type=typeof(Action<UInt32>);
Action<UInt32> beepAction2=(Action<UInt32>) Marshal.GetDelegateForFunctionPointer(beeper,type);
var-load=DynamicLibraryLoader.TryLoad(“User32.dll”);
var beeper=loaded.GetProcAddress(“MessageBeep”);
变量类型=类型(动作);
动作beepAction2=(动作)Marshal.GetDelegateForFunctionPointer(蜂鸣器,类型);
最后一行抛出一个参数异常,表示指定的类型不能是泛型类型定义。有没有办法解决这个问题,或者我必须提供一个命名的委托来执行任何非托管的操作


对于任何对使用非托管代码在windows中默认情况下可以执行的操作感兴趣的人,请参考-(创建快捷方式,动态加载DLL)

如异常所示,在将本机函数指针转换为托管代码时,必须使用非泛型委托

因此,没有语法或解决方法?@Maslow,不,现在没有。我想,既然没有其他答案,我会接受这个答案,它只会让我回想起异常所说的,我更喜欢一些资源、参考或某种解决方法。@Maslow,不幸的是,没有更多的东西可以提供。目前这只是一个不受支持的场景