枚举所有继承特定接口的类

使用 Linq:
var types = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(ISecurity))))
.ToArray();
不使用 Linq:
public static IEnumerable<Type> GetType(Type interfaceType)
{
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (var type in assembly.GetTypes())
{
foreach (var t in type.GetInterfaces())
{
if (t == interfaceType)
{
yield return type;
break;
}
}
}
}
}

实例:

class Program
{
static void Main(string[] args)
{
var arr= AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(p => p.GetTypes().Where(t => t.GetInterfaces().Contains(typeof (ISignable))))
.ToArray();
Console.Read();
}
}

public interface ISignable
{

}

public class Md5Sign : ISignable
{

}
public class Base64Sign : ISignable
{

}

时间: 2024-08-03 06:57:32

枚举所有继承特定接口的类的相关文章

Emit生成特定接口的类

参考 动态生成类 http://www w2bc com/Article/44799 http://www.cnblogs.com/yingql/archive/2009/03/24/1420914.html http://www.cnblogs.com/BangQ/archive/2011/07/19/2110301.html?spm=5176.100239.0.0.kAe2my http://www.cnblogs.com/yuming1983/p/3701540.html using Sy

Java自学-继承与接口 Object类

Java中的超类 Object 步骤 1 : Object类是所有类的父类 声明一个类的时候,默认是继承了Object public class Hero extends Object package charactor; import property.Item; public class Hero extends Object { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 public v

12.面向对象(继承/super/接口/抽象类)

面向对象继承与派生继承继承顺序继承原理子类调用父类的方法(super)组合接口接口的概念:接口的概念解释和使用:python中的接口:抽象类 面向对象 继承与派生 继承 什么是继承?继承是一种创建新的类的方式 class A: pass class B(A): pass 在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或者超类,新建的类称为派生类或者子类 python中类的继承分为,单继承和多继承. 查看继承的方法B.__bases__ 如果没有指定基类,python的类会默

PHP类的继承和接口

PHP类的继承的一些语法 -PHP的类只支持单继承,就是每个类最多只能有一个父类或者没有父类. -子类不能继承父类使用private修饰的成员. 修饰符 可访问范围 public 当前类.子类和类外 protected 当前类和子类 private 当前类 类的类型 含义 被final修饰的类 只能实例化不能被继承 被abstract修饰的类 只能被继承不能被实例化 注意: 被final修饰的方法不能被子类重写. -通常要被子类继承的成员都使用protected,其余的尽量使用private,把

黑马程序员---java基础-Java类 继承&amp;抽象&amp;接口

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.继承 继承是所有OOP语言不可缺少的部分,在java中使用extends关键字来表示继承关系.当创建一个类时,总是在继承,如果没有明确指出要继承的类,就总是隐式地从根类Object进行继承.比如下面这段代码: 1 class Person { 2 public Person() { 3 4 } 5 } 6 class Man extends Person { 7 public Man()

【C# 复习总结】类、继承和接口

1 类 定义新的数据类型以及这些新的数据类型进行相互操作的方法 定义方式: class Cat { } class Cat:object { } C#中所有的类都是默认由object类派生来的,显示指定或者省略效果是一样的,所以上面的两个例子是完全相同的. C#中类包括:抽象类.密封类.非抽象类 abstract:表示修饰的类不完整,也就是抽象类,只能用做基类. 在使用是不能直接实例化, 不能使用new运算符. sealed:表示修饰的类不可派生,也就是密封类. base:访问最近的基类,也就是

PHP类继承、接口继承关系概述

PHP类继承: PHP类不支持多继承,也就是子类只能继承一个父类,但是支持多层次继承,比如: 1 class frist{ 2 public function __construct(){ 3 echo "我是第一个类.","<br>"; 4 } 5 public function printer(){ 6 echo "frist","<br>"; 7 } 8 } 9 class seconds ext

php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一系列个体的集合,类是一个抽象的概念2.什么是对象?从类中拿到的具有具体属性值得个体,称为对象,对象是一个具体的个体 所以,面向对象即我们专注对象来处理问题,通过从一个个具有属性和功能的类中拿到对象来处理问题. 下面我们再来细说下面向对象的三大特征:继承/封装/多态 一.继承 在PHP中我们主要通关E

第10章 接口、继承与多态 Object类

在Java中,所有的类都直接或间接继承了java.lang.Object类.Object类是比较特殊的类,它是所有类的父类,是Java类层中的最高层类.当创建一个类时,总是在继承,除非某个类已经指定要从其他类继承,否则它就是从Java.lang.Object类继承而来. Java中的每个类都源于java.lang.Object类,如:String.Integer等都是继承于Object类,除此之外自定义的类也都继承于Object类,由于所有类都是Object子类,所以在定义类时,省略了exten