The main problem, as I understand it, seems to be that C## code runs as managed i.e. it's interpreted code and what I'm creating does not appear to be a 'proper' DLL. It also precludes the use of pointers which would appear to be necessary to create the relevant interfaces for the plug-in DLL.
You can specify that the code is 'unsafe' to enable the use of pointers but it doesn't seem to be enough. I'm obviously missing something in order to make it appear to PL/SQL developer as a valid DLL with the right interface. I'm just not technical enough to know if that something is actually feasible or even exists.
As an example of where I'm struggling the return from IdentifyPlugIn in C++ is a char*. There is no direct equivalent to this in C## and I don't know how to convert what may be the best type to use e.g. a char[].
Sorry to be a bit vague, but it's all a bit beyond my usual area of expertise.
Cheers,
Jason