我正在使用RabbitMQ在應用程序(RPC)之間進行通信,我有什麼是調用我需要的方法的適當方式的困境。我有一個包含一堆可用方法的類,我需要執行與我的Rabbit消息中攜帶的字符串相匹配的類。Method.Invoke()vs switch
選項1: 使用顯示的方法HERE更清潔,更好看,但我不知道是否有任何反對它。例如性能損失,不好的做法,等
var method = this.GetType().GetMethod(methodNameString);
method.Invoke(this, messagebody);
選項2: 使用開關
switch(methodNameString)
case: method1
method1();
case: method2
method2();
...
它是否必須非常快? methodNameString是否由外部系統提供(因爲它可以調用對象上的任何方法)? – Chet
我對此的擔心是您高興地調用任何名稱從消息隊列中進入的隨機方法。所以確保他們所屬的班級除了這些方法外沒有任何內容。但這很容易,很明顯。我比開關更喜歡它,並且比'Dictionary'更好。但我住在一個山洞裏,我怕火。 –
@Chet我有一個外部實體調用一個WebService,它會對傳遞的數據進行一堆檢查(xsd等),然後WebService通過消息代理髮送命令給Windows Service –