2011-07-25 85 views
2
Public interface IRuleObject {} 

Public class RuleBase : IRuleObject {} 

Public class Length : RuleBase {} 

Public class Range : RuleBase {} 

Public class SetDefault : IRuleObject {} 

我試着寫一段代碼中,我可以得到所有實現 IRuleObject類的...如何使用反射來獲取接口的所有實現?

正如你注意到,一些規則可能從規則庫導出它實現了IRuleObject還有一些其他規則不繼承規則庫,並嘗試實現自己的IRuleObject。以上所有規則可分配給IRuleObject

我想:

Assembly dll = Assembly.GetAssembly(typeof(IRuleObject)); 
var rules = dll.GetTypes().Where(x => x.IsAssignableFrom(typeof(IRuleObject))); 

但是它無法檢索規則
的想法是讚賞:-)
感謝

回答

3

我想你拿到IsAssignableFrom走錯了路回合。嘗試:

var rules = dll.GetTypes() 
       .Where(x => typeof(IRuleObject).IsAssignableFrom(x)); 

這樣的事情得到了很多仿製藥參與棘手,但在你的情況下,它應該足夠簡單。

+0

謝謝喬恩,你一如既往的救星:-) –

相關問題