一个使用泛型的工厂类

转载 2007年09月21日 09:34:00

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

    }

}

 

相关文章推荐

Spring学习笔记 使用Static Factory(静态工厂类)创建Bean

普通定义Bean并且进行初始化的方法一般通过property(属性)的setter方法或者构造方法进行。例如 这种定义创建Bean相当于使用new  com.cs...

Spring学习笔记 使用Non-Static Factory(非静态工厂类)创建Bean

同上一篇中静态工厂类创建Bean类似,唯一不同的是工厂类中获取实际对象的方法比如:getInstance() 不是静态方法(non-static)。 工厂类代码: package factoryb...

C++工厂类和单例模式的结合使用

单例模式: 简单来说一个类只有一个实例且封装性好。这里用宏定义实现。animal_singleton.h#pragma once #include #define IMPLEMENTION_SING...

JavaWeb学习篇——使用通用工厂类解耦MVC框架

本文主要介绍如何通过定义一个通用工厂类来实现MVC框架开发中各层间的解耦。 package com.empiresteven.factory; import java.io.FileNotFound...

Spring 创建对象的问题,不同构造方法创建对象,使用工厂类类获取对象、单例或多例、延迟创建问题

Spring 创建对象的问题,不同构造方法创建对象,使用工厂类类获取对象、单例或多例、延迟创建问题。...

1.12使用工厂类创建线程

工厂模式是面向对象编程中最常用的模式之一,它是一个创建者模式,使用一个类为其他的一个或者多个类创建对象。使用工厂类,可以 将对象的创建集中化,这样做的好处有:1) 更容易修改类,或者改变创建对象的方式...

使用Executors工厂类创建线程池

接口Executor仅仅是一种规范,是一种声明,是一种定义,并没有实现任何的功能,所以大多数的情况下,需要使用接口的实现类来完成指定的功能,比如ThreadPoolExecutor类就是Executo...

HttpClientFactory工厂类

  • 2017年11月01日 18:41
  • 8KB
  • 下载

工厂类和按钮控件扩展

  • 2013年08月10日 00:00
  • 8KB
  • 下载

【Spring Note】 容器中的工厂类

Dog类如下: package com.dora.testingAnimal.bean; import com.dora.testingAnimal.ibeans.Being; public c...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个使用泛型的工厂类
举报原因:
原因补充:

(最多只允许输入30个字)