引入Wukong让你的系统瞬间具备IOC能力( 二 )


【引入Wukong让你的系统瞬间具备IOC能力】?那么当我们指定了类的全名称之后,Wukong是如何通过类全名称找到相应的类定义信息并创建实例的呢?Wukong有两种方法实现上述目的:一是像传统方法一样将对象所在的第三方包进行显示引用,但这种方式会导致引用之间的强耦合性;同时对于系统的扩展性不是很友好;因此并不推荐;第二种方式是将第三方包程序集文件放到系统运行目录或其他指定目录即可,该种方式灵活已扩展,且方便系统运行中的热更新,推荐使用该方法 。
?当使用第二种方法时,如果将第三方包程序集文件放在系统运行目录中,不需要做额外工作,即可通过Wukong正常获取到其中的对象实例;假如因为某种原因需要将程序集文件放到其他指定目录中,此时需要使用Wukong提供的方法AddSearchPath将目录添加到搜索范围内,Wukong才能够正常获取到对象实例 。
// 指定Wukong创建对象实例时,在如下路径中搜索对象定义Wukokng.AddSearchPath("c:\\libs");六、常用方法说明1. 添加程序集搜索路径(默认只在应用执行目录中搜索)定义:public static void AddSearchPath(string path)
参数:path: 搜索路径,绝对路径 。
返回:无
2. 根据类全名称获取对象实例定义:public static object GetObject(string classFullName, params object[] args)
参数:classFullName: 类全名称 。args: 对象构造参数数组 。
返回:生成的对象实例 。
3. 根据类全名称获取指定类型的对象实例定义:public static T GetObject<T>(string classFullName, params object[] args)
参数:classFullName: 类全名称 。args: 对象构造参数数组 。
返回:指定类型的对象实例 。
4. 以单例模式根据类全名称获取对象实例定义:public static object GetSingleObject(string classFullName, params object[] args)
参数:classFullName: 类全名称 。args: 对象构造参数数组 。
返回:生成的对象实例,相同构造参数多次调用返回同一实例 。
5. 以单例模式根据类全名称获取指定类型的对象实例定义:public static T GetSingleObject<T>(string classFullName, params object[] args)
参数:classFullName: 类全名称 。args: 对象构造参数数组 。
返回:指定类型的对象实例,相同构造参数多次调用返回同一实例 。
6. 根据配置文件Id获取对象实例定义:public static object GetObjectById(string objectId)
参数:objectId: 配置文件中对象Id
返回:生成的对象实例 。
7. 根据配置文件Id获取指定类型对象实例定义:public static T GetObjectById<T>(string objectId)
参数:objectId: 配置文件中对象Id
返回:指定类型的对象实例 。
8. 以单例模式根据配置文件Id获取对象实例定义:public static object GetSingleObjectById(string objectId)
参数:objectId: 配置文件中对象Id
返回:对象实例,多次调用返回同一实例 。
9. 以单例模式根据配置文件Id获取指定类型的对象实例定义:public static T GetSingleObjectById<T>(string objectId)
参数:objectId: 配置文件中对象Id
返回:指定类型的对象实例,多次调用返回同一实例 。
【Github源码】

经验总结扩展阅读