vb.net - Call to LotusSession.GetDatabase works in VB but not in C# -
i have old vb code send mails using lotus notes works, have re-written c#, behaves differently:
vb:
notessession = createobject("notes.notessession") notesdb = notessession.getdatabase("", "") c#:
_notessession = new notessession(); _notessession.initialize(passwordstring); _notesdatabase = _notessession.getdatabase( "", ""); first of in c# need initialize notessession password, , secondly not accept empty string parameters @ runtime. exception thrown: "a database name must provided".
in both vb , c# refer same com : lotus domino objects
i need able call getdatabase without specifying server , database file.
thanks in advance.
solution (thanks guys):
dynamic _notessession = activator.createinstance(type.gettypefromprogid("notes.notessession")); _notesdatabase = _notessession.getdatabase("", ""); this way have no intellisense properties , methods can found here
when create new instance of notesession type in c# using new keyword, use com-interop dll referenced project @ build-time. not same thing calling createobject, requires no interop dll. closer equivalent in c# be:
type t = type.gettypefromprogid("notes.notessession"); _notessession = activator.createinstance(t); or, if need exact same thing, add reference microsoft.visualbasic.dll library , call microsoft.visualbasic.interaction.createobject method c#.
as richard pointed out in comments below, reason why seeing difference in behavior because creating 2 different types of objects. presumably, when call new notessession in c#, using notessession class lotus namespace, rather 1 in notes namespace.
Comments
Post a Comment