I know this thread is old, but I've worked a lot with the Domino API and the typical Notes LotusScript objects via the Domino COM API.
The problem with the Domino API is that its memory management via COM is horrible (if using the API in C#, or VB, etc.), and it will cause memory leaks and eventually cause the whole API and the Notes client to crash (even if you don't have the client open, you will not be able to start it after the API crashes without restarting your computer, or calling "nsd -kill"). Fun.
I've found that using the Notes C API within C# via P/Invoke, you can better manage the memory resources so that the API doesn't cause horrible memory leaks and crashes. I wrote a partial wrapper in C#, using P/Invoke, that accesses the Notes C API from the notes.dll. My use of it has nothing to do with trying to work within a Domino environment, but to make use of the Notes assembly to have access to NSF files to extract DXL information within a C# environment. Obviously, you would need to have the Notes client installed to have access to the notes.dll and the C API. But my C# wrapper of the Notes C API works great and is more stable than the Domino COM API that is provided when you install the Notes client.
The classes that I've implemented in C# (that I've only needed) from the Notes C API are:
NotesSession (as NotesRuntime)
NotesDatabase
NotesNote
NotesItem
NotesDXLExporter
NotesNoteCollection
As well as some other interim classes, enums, and structs to handle the translation from the C API into C#.
The classes I've implemented thus far have served the purposes that I've needed from the Notes C API. They can definitely be expanded upon, but I didn't try to encapsulate the entire API within the C# P/Invoke wrapper. I also had to create handlers for dealing with OLE embedded objects that may be stored within Notes documents, and getting the stored data out of those OLE objects, using Windows IStorage objects.
Note: I can provide some samples later (I have to rename namespaces and generalize the code, due to proprietary reasons), but I created the C# wrapper classes by using the "Lotus C API Notes/Domino 8.5.2 Reference" NSF that is provided by IBM/Lotus (as a downloadable NSF). Using the C definitions and class references, I could translate those to C# P/Invoke calls and wrap them into friendlier C# classes, that then behaved more like LotusScript class calls, but within C#, and the implemented classes manage and dispose of their memory so that the whole thing doesn't crash after you've accessed hundreds of thousands of documents from a C# program. :)