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);
            }

        }

    }
  • 相关阅读:
    JAVA_集合_作业01
    Java_Objects_hashCode
    Java成员内部类
    Java集合练习_实现购物车需求
    Java初级_单例设计模式
    HelloWorld
    vue中视频标点
    防抖节流?俩者区别?vue如何使用防抖、节流来解决点击问题?
    keep-alive
    axios和ajax的区别
  • 原文地址:https://www.cnblogs.com/wenrenhua08/p/3993643.html
Copyright © 2011-2022 走看看