Public interface IRuleObject {}
Public class RuleBase : IRuleObject {}
Public class Length : RuleBase {}
Public class Range : RuleBase {}
Public class SetDefault : IRuleObject {}
我正在尝试编写一段代码,在其中我可以获取实现的所有类
IRuleObject ...
正如您所注意到的,一些规则可能是从实现IRuleObject的RuleBase派生的,还有其他一些规则没有继承RuleBase而是尝试自己实现IRuleObject。以上所有规则均可分配给IRuleObject。
我试过了 :
Assembly dll = Assembly.GetAssembly(typeof(IRuleObject));
var rules = dll.GetTypes().Where(x => x.IsAssignableFrom(typeof(IRuleObject)));
但是它无法检索规则
想法表示赞赏:-)
谢谢
最佳答案
我认为您刚从错误的方向获得了IsAssignable。尝试:
var rules = dll.GetTypes()
.Where(x => typeof(IRuleObject).IsAssignableFrom(x));
当涉及泛型时,这种事情会变得非常棘手,但是在您的情况下,它应该足够简单。