> From: [email protected] [mailto:mono-devel-list-
> [email protected]] On Behalf Of Greg Young
>
> <Reference Include="Mono.Posix" Condition=" '$(OS)' != 'Windows_NT' " />
That doesn't do the trick all by itself, because then your code won't compile
on windows, in all the places where something references Mono.Posix. If you
want to use this as a solution, you'll need to define a compiler symbol in the
project, and maintain different project files (or different build
configurations) when building on windows or mono, and then #if to remove
references to Mono.Posix, when built in windows. While this technique works, it
would result in binaries that are not cross-platform compatible (maybe you
don't care). And you have to maintain the separate project files, which is
annoying.
The other way is to build a factory, and do a run-time check to load the
appropriate assembly. For example, you can put the abstract StuffDoer class in
a common assembly, which is available to all your platform agnostic code. Then
write a StuffDoerWin derivative class in a windows-only assembly, and a
StuffDoerMono class in a mono-only assembly. Choose which one to instantiate
using a run-time check, like:
// This is defined in a common assembly
public static abstract class StuffDoer {
public static StuffDoer CreateInstance() {
if (Type.GetType("Mono.Runtime") == null) {
// running on windows
// Use Activator.CreateInstance to return an object of
type StuffDoerWin, from my Windows assembly
return newStuffDoer;
} else {
// running on mono
// Use Activator.CreateInstance to return an object of
type StuffDoerMono, from my Mono assembly
return newStuffDoer; }
}
public abstract void DoStuff(); // Must be overridden in derivative
class
}
// This is defined in a windows-only assembly
public static class StuffDoerWin : StuffDoer {
...
}
// This is defined in a mono-only assembly
public static class StuffDoerMono : StuffDoer {
// Here, I can use Mono.Posix stuff
...
}
_______________________________________________
Mono-devel-list mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/mono-devel-list