我有一些舊的VB代碼使用Lotus Notes這樣的作品,我已經重新編寫成C#發送郵件,但表現不同:電話LotusSession.GetDatabase工作在VB,但不是在C#
VB:
NotesSession = CreateObject("Notes.Notessession")
NotesDb = NotesSession.GetDatabase("", "")
C#:
_notesSession = new NotesSession();
_notesSession.Initialize(passwordString);
_notesDatabase = _notesSession.GetDatabase("", "");
在C#我需要初始化一個密碼NotesSession,其次它不會接受在運行時爲空字符串參數一。引發異常:「必須提供數據庫名稱」。
在VB和C#我指的是同一個COM:Lotus Domino的對象
我需要能夠調用GetDatabase不指定服務器和數據庫文件。
在此先感謝。
解決方案(謝謝你們):
dynamic _notesSession = Activator.CreateInstance(Type.GetTypeFromProgID("Notes.NotesSession"));
_notesDatabase = _notesSession.GetDatabase("", "");
這種方式,你有沒有智能感知,但所有屬性和方法,可以發現here
重要的是要明白,Notes有兩組不同的非常相似的「後端類」。有一些OLE類植在'Notes.NotesSession'中,並且有一些COM類以「Lotus.NotesSession」爲根。舊的VB代碼使用OLE類,而不是COM類。正如我所說的,COM和OLE類 – 2013-05-02 13:52:17
啊!非常好的說明,謝謝@RichardSchwartz,這樣更有意義,我對Notes並不熟悉,所以我沒有意識到這一點,我會更新我的答案。 – 2013-05-02 13:59:40
謝謝你們。使我的一天。 – zmaster 2013-05-02 14:52:37