【发布时间】:2012-06-28 07:33:43
【问题描述】:
我正在尝试隐藏我的 P/Invoke 函数,比如这个:
[<DllImport("kernel32.dll", SetLastError=true)>]
extern bool private CreateTimerQueueTimer(IntPtr& phNewTimer, nativeint TimerQueue, WaitOrTimerDelegate Callback, nativeint Parameter, uint32 DueTime, uint32 Period, ExecuteFlags Flags)
但奇怪的是,private 被忽略了——这真的很烦人,因为我想隐藏与这些函数相关的所有笨拙的结构和枚举。
我想我可以把所有东西都放在一个私有模块中,所以这没什么大不了的,但是我错过了什么吗?
【问题讨论】:
-
闻起来像虫子;将这些放在私有模块中确实听起来是最好的解决方法。
-
不管怎样,这听起来像是接口文件的绝佳用例(换句话说,使用 *.fsi 文件隐藏某些元素)。
-
你的
extern函数现在在什么情况下?在一个班级内,还是? -
@pblasucci 拜托,这不是“用例”。他们并没有在某些场景中破坏访问修饰符关键字,只是为了给另一个功能赋予目的。请原谅我的语气,但当人们在他们最喜欢的语言出现问题时拒绝接受时,我不禁感到愤怒。这对语言的未来不利。
-
@ReiMiyasaka:哇!慢慢来。我没有说它是或不是一个错误。我不能打那个电话。我只是建议了一种解决您问题的方法。这不是 StackOverflow 的重点吗?
标签: f# pinvoke access-modifiers