NopCommerce(EBuy模拟)中类型查找接口ITypeFinder的设计——反射+泛型

来源:互联网 发布:吴昕的淘宝店名 编辑:程序博客网 时间:2024/06/06 00:58
 /// <summary>    /// Classes implementing this interface provide information about types     /// to various services in the EBuy engine.    /// 类型查找器接口——反射+泛型    /// </summary>    public interface ITypeFinder    {        /// <summary>        /// 获取程序集列表        /// </summary>        /// <returns>程序集列表</returns>        IList<Assembly> GetAssemblies();        /// <summary>        /// 获取派生自assignTypeFrom类的类集合        /// </summary>        /// <param name="assignTypeFrom">指定父类</param>        /// <param name="onlyConcreteClasses">是否只查找具体类</param>        /// <returns></returns>        IEnumerable<Type> FindClassesOfType(Type assignTypeFrom, bool onlyConcreteClasses = true);        /// <summary>        /// 从assemblies程序集集合中获取派生自assignTypeFrom类的类集合        /// </summary>        /// <param name="assignTypeFrom">指定父类</param>        /// <param name="assemblies">指定被查找的程序集</param>        /// <param name="onlyConcreteClasses">是否只查找具体类</param>        /// <returns></returns>        IEnumerable<Type> FindClassesOfType(Type assignTypeFrom, IEnumerable<Assembly> assemblies, bool onlyConcreteClasses = true);        /// <summary>        /// 获取派生自T类的类集合        /// </summary>        /// <typeparam name="T">指定父类</typeparam>        /// <param name="onlyConcreteClasses">是否只查找具体类</param>        /// <returns></returns>        IEnumerable<Type> FindClassesOfType<T>(bool onlyConcreteClasses = true);        /// <summary>        /// 从assemblies程序集集合中获取派生自T类的类集合        /// </summary>        /// <typeparam name="T">指定父类</param>        /// <param name="assemblies">指定被查找的程序集</param>        /// <param name="onlyConcreteClasses">是否只查找具体类</param>        /// <returns></returns>        IEnumerable<Type> FindClassesOfType<T>(IEnumerable<Assembly> assemblies, bool onlyConcreteClasses = true);        /// <summary>        /// 查找程序集中标记有TAssemblyAttribute特性并且派生自T的类集合        /// </summary>        /// <typeparam name="T">指定父类</typeparam>        /// <typeparam name="TAssemblyAttribute">指定特性</typeparam>        /// <param name="onlyConcreteClasses">是否只查找具体类</param>        /// <returns></returns>        IEnumerable<Type> FindClassesOfType<T, TAssemblyAttribute>(bool onlyConcreteClasses = true) where TAssemblyAttribute : Attribute;        /// <summary>        /// 查找定义了T特性的程序集        /// </summary>        /// <typeparam name="T">特性</typeparam>        /// <returns></returns>        IEnumerable<Assembly> FindAssembliesWithAttribute<T>();        /// <summary>        /// 在指定程序集中查找定义了T特性的程序集        /// </summary>        /// <typeparam name="T">特性</typeparam>        /// <param name="assemblies">指定程序集</param>        /// <returns></returns>        IEnumerable<Assembly> FindAssembliesWithAttribute<T>(IEnumerable<Assembly> assemblies);        /// <summary>        /// 从程序集目录中查找包含有T特性的程序集        /// </summary>        /// <typeparam name="T">特性</typeparam>        /// <param name="assemblyPath">程序集所在目录</param>        /// <returns></returns>        IEnumerable<Assembly> FindAssembliesWithAttribute<T>(DirectoryInfo assemblyPath);    }

0 0