zoukankan      html  css  js  c++  java
  • 一个使用泛型的工厂类

    Provider提供程序模型中,常常使用反射工厂来获得配置的实例,虽然代码比较简单,但是却也必不可少。

    这里用添加了泛型这一特性,虽然性能不见得有什么提高(用不用泛型都会有一个类型转换),但是用了就好像给人一种性能提高了的感觉 ^_^ .

    using System.Reflection;

    namespace Helper.Reflection
    {
        
    /// <summary>
        
    /// 类工厂
        
    /// </summary>

        static class ClassFactory
        
    {
            
    /// <summary>
            
    /// 创建类实例的方法,程序集名可以与类命名空间不同
            
    /// </summary>
            
    /// <typeparam name="T">类型</typeparam>
            
    /// <param name="assemblyName">程序集名</param>
            
    /// <param name="className">完全类名</param>
            
    /// <returns>类的实例</returns>

            public static T CreateInstance<T>(string assemblyName, string className)
            
    {
                
    return (T)Assembly.Load(assemblyName).CreateInstance(className);
            }

            
    /// <summary>
            
    /// 创建类实例的方法,程序集名即为类命名空间
            
    /// </summary>
            
    /// <typeparam name="T">类型</typeparam>
            
    /// <param name="className">完全类名</param>
            
    /// <returns>类的实例</returns>

            public static T CreateInstance<T>(string className)
            
    {
                
    string assemblyName = className.Substring(0, className.LastIndexOf('.'));
                
    return (T)Assembly.Load(assemblyName).CreateInstance(className);
            }

        }

    }
  • 相关阅读:
    【1】【leetcode-33,81】 搜索旋转排序数组
    【leetcode-82,83,26,80】 删除排序链表/数组中的重复元素
    【leetcode-84】 柱状图中最大的矩形
    Objective-C之run loop详解
    ReactiveCocoa
    IOS响应式编程框架ReactiveCocoa(RAC)使用示例
    通过WireShark抓取iOS联网数据实例分析
    Receiver type for instance message is a forward
    Swift 高级运算符
    ios Instruments 内存泄露
  • 原文地址:https://www.cnblogs.com/wenrenhua08/p/3993643.html
Copyright © 2011-2022 走看看