2011-06-22 61 views
0

我試圖將nServiceBus PubSub .net4示例轉換爲vb,並且我在某一點上掙扎,我認爲這是一個語言問題,但我想我會問專家。在vb.net中使用nservicebus

有問題的代碼是從出版商:

var eventMessage = publishIEvent ? Bus.CreateInstance<IEvent>() : new EventMessage(); 

當我嘗試和用vb

Public Property Bus As IBus 
Dim eM As New EventMessage() 
      eM = Bus.CreateInstance(Of IEvent)() 

我得到未設置爲對象錯誤的實例的對象refrence運行此

但是然後我得到一個錯誤,說我不能使用新的iBus是一個接口

關於如何解決此問題的任何想法?

鑑於c#和vb.net之間的相似之處我不相信這不可能?

任何想法表示歡迎

感謝

克里斯

回答

0

條件沒有同類型的兩個部分,但它們都分配給IEvent(我相信),這是該類型C#編譯器會使eventMessage擁有。試試這個:

Dim eM as IEvent 
If publishIEvent Then 
    eM = Bus.CreateInstance(Of IEvent)() 
Else 
    eM = New EventMessage() 
End If 

(可能是不完全正確的語法,我的VB是生鏽...)

(順便說一句,我建議在eM代替使用名稱eventMessage)。

+0

謝謝@Aasmund @JasonG有一個很大的aaaah即它是什麼!我唯一的問題是VB無法使用接口而無需創建它們的顯式實現......只需要在C#中實現 –

0

上面的C#代碼是if-then結構。我沒有在我面前的代碼,但該行本質上是速記:

If (publishIEvent == true) 
{ 
    var eventMessage = Bus.CreateInstance<IEvent>() 
} 
else 
{ 
    var eventMessage = new EventMessage(); 
} 

希望這有助於解決問題。我想知道上面的代碼在語法上不正確,只是試圖說明C#語句的重點。