2014-07-18 39 views
1

我正在嘗試編寫一個程序來幫助分析/記錄我們的應用程序之一。 我希望能夠獲得Interator函數可能產生的所有對象的列表。例如,我想能夠對這個代碼運行分析,並與名字「A類」,「B類」和「C類」結束:使用反射來確定Interator函數可能產生的類?

Public Iterator Function Sample(status As Boolean) As IEnumerable 
    If status = True Then 
     Yield New ClassA 
    Else 
     Yield New ClassB 
     Yield New ClassC 
    End If 
End Function 

這可能使用反射或者也許是Mono.Cecil?

+0

這樣的迭代器是否總是和你所顯示的一樣直接(每個'Yield'語句直接創建返回的對象)?如果沒有,我會說它是'Object'和任何派生它的東西,或者你必須解決停機問題。 –

+0

是的。有一個可能返回的類的列表,我可以訪問這個列表。 – Slapout

回答

1

不確定這是可能的。

想象一個迭代器,它從數據庫查詢中提取記錄,並使用Factory模式從實現公共接口的記錄構建對象,但仍是不同的具體類型。這個迭代器可以創建屬於許多不同類型的任意數量的對象,並且隨着應用程序隨時間變化,這些類型也可能會發生變化。

+0

有一組可以返回的對象。我可以訪問這個列表。 (這是CQRS設置的一部分,命令處理程序產生一個表示需要處理的事件的類的列表。) – Slapout

相關問題