I suggest that you implement this using interfaces. You place the interface declaration in a common file, use the interfaces from the main exe but implement them in separate dlls. This gives you all the flexibility you want, e.g. group your methods into bundles and place them on different interfaces. You will only need a class identifying system (i.e. a "class id" string) that will be known to the exe and implementing dlls and a "factory" exported function in each dll that creates the implementing object of a known "class id". You can have many alternate implementations of an interface with different class ids and you can even replace an implementing dll with another version of it with bug fixes or even different functionality.
In my mind it is always <Plugin System> ==> Interfaces. HTH. On Wed, Jun 20, 2012 at 11:14 AM, ik <ido...@gmail.com> wrote: > The idea of implementing it like so, came to me after few years now of > having the need to recreate the whole logic based of the code for every new > demand from the client (both as human, and as software). The main code > almost never changes, but so many additions, that I'm starting to use the > dynamic execution of methods, and now I realize, that if I'll extract it to > a shard library, it will be much easier to change, add etc... only the > actual need, and not to touch other stuff, and that requires me to design an > engine instead. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal