根据the MonoMac documentation为NSWorkspace.RecycleUrls
签名是:的MonoMac NSWorkspace.RecycleUrls与recycleURLs:completionHandler
[MonoMac.Foundation.Export("recycleURLs:completionHandler:")]
public virtual void RecycleUrls (MonoMac.Foundation.NSDictionary urls, NSWorkspaceUrlHandler completionHandler)
根据Apple's documentation for NSWorkspace
recycleURLs:completionHandler
为签名是:
- (void)recycleURLs:(NSArray *)URLs completionHandler:(void (^)(NSDictionary *newURLs, NSError *error))handler
我有网址的阵列我想要回收。
在这里我很难倒 - Apple的文档说第一个参数是NSArray
,但是MonoMac想要一个NSDictionary
。所有构建NSDictionary
的函数都需要键值和值(不出所料),而我只有值。
除了采用MonoMac的RecycleUrls
(转载如下)并将其改写为NSArray
之外,还有什么要做吗?
[Export("recycleURLs:completionHandler:")]
public unsafe virtual void RecycleUrls(NSDictionary urls, NSWorkspaceUrlHandler completionHandler)
{
if (urls == null)
{
throw new ArgumentNullException("urls");
}
if (completionHandler == null)
{
throw new ArgumentNullException("completionHandler");
}
BlockLiteral blockLiteral = default(BlockLiteral);
blockLiteral.SetupBlock(NSWorkspace.static_InnerNSWorkspaceUrlHandler, completionHandler);
if (this.IsDirectBinding)
{
Messaging.void_objc_msgSend_IntPtr_IntPtr(base.Handle, NSWorkspace.selRecycleURLsCompletionHandler_, urls.Handle, (IntPtr)((void*)(&blockLiteral)));
}
else
{
Messaging.void_objc_msgSendSuper_IntPtr_IntPtr(base.SuperHandle, NSWorkspace.selRecycleURLsCompletionHandler_, urls.Handle, (IntPtr)((void*)(&blockLiteral)));
}
blockLiteral.CleanupBlock();
}
感谢您报告此:-) –