[Mono-list] Multiplatform DllImport?
Miguel de Icaza
miguel@ximian.com
23 Nov 2001 19:22:04 -0500
> Instead of having a separate .cs file for every platform
> to import the definition using PInvoke, I introduced a private
> attribute called "DllImportMap". e.g.
>
> [DllImportMap("winsock.dll", "*-sunos-*", "libsocket.so")]
> [DllImportMap("winsock.dll", "std-shared-object", "libc.so")]
> class SocketOps
> {
> [DllImport("winsock.dll")]
> public int listen(int fd, int backlog);
> }
Oh! This is a really sweet idea!
> So as not to introduce too much embrace and extend,
> I made the attribute "floating". That is, it can be in
> any namespace. This allows a "private" class to be
> put into the importing assembly called something like
> "MyNamespace.DllImportMapAttribute". This will
> not pollute the global namespace, and so third party
> programmers will not come to rely upon it by accident.
This is nice, and also, it can always be just an internal attribute as
well.
Miguel.