|
■82636 / inTopicNo.11) Re[6]: 64bitOSでのWinAPI参照 > いずれにしても、objectのままにしたのが?ですが。
個別に見てみないと何とも言えないところではありますね。 VB6 当時でも As Object で呼び出すことはありましたし。
' for VB6 Private Declare Function OleDraw Lib "ole32" _ ( ByVal pUnk As Object, ByVal dwAspect As DVASPECT, _ ByVal hDCDraw As OLE_HANDLE, lprcBounds As RECT ) As Long
> 汎用objectは遅延バインディングなど何かと評判の悪い型ですから。
VB6 の Variant よりはマシかも。
> VB側のロジックを複雑にしたくない、汎用的にしたいというのもあるのですが、
汎用的に利用できるようなクラスを作成するためには、 カプセル化した処理(クラス等)の実装は、 それなりに凝った設計にする必要があると思います。
そうすれば、クラスの利用者(他の開発者)が、 複雑なロジックの利用(IntPtrを直接扱うなど)を回避できるでしょう。
> Declare Function宣言の引数としては、IntPtrとして受けておいて、 ポインタ作業が多いなら、いっそ C# で unsafe コードな DLL を用意するとか。
> VB側のロジックとしてはTryParseとかで判定しておいて、オーバーフロー回避とかですかね? どういう意味でしょうか? TryParse の実装は基本的に、 Function TryParse(ByVal s As String, <[Out]> ByRef result As 変換結果) As Boolean だと思うのですが、IntPtr やオーバーフローとどういう繋がりがあるのか読み取れませんでした。
|