C#自定义应用程序上下文对象+IOC自己实现依赖注入
标签:create catch ext.get nts art ado void summary 项目
以前的好多代码都丢失了,加上最近时间空一些,于是想起整理一下以前的个人半拉子项目,试试让它们重生。自从养成了架构师视觉 搭建框架之后,越来 越看不上以前搭的框架了。先撸个上下文对象加上实现依赖注入。由于还是要依赖.net 4,所以像Autofac这样的就用不了,于是仿照着实现了。
///
/// 自定义应用程序上下文对象
///
public class AppContextExt : IDisposable
{
///
/// app.config读取
///
public Configuration AppConfig { get; set; }
///
/// 真正的ApplicationContext对象
///
public ApplicationContext Application_Context { get; set; }
//服务集合
public static Dictionary Services = new Dictionary();
//服务订阅事件集合
public static Dictionary>> ServiceEvents = new Dictionary>>();
//上下文对象的单例
private static AppContextExt _ServiceContext = null;
private readonly static object lockObj = new object();
///
/// 禁止外部进行实例化
///
private AppContextExt()
{
}
///
/// 获取唯一实例,双锁定防止多线程并发时重复创建实例
///
///
public static AppContextExt GetInstance()
{
if (_ServiceContext == null)
{
lock (lockObj)
{
if (_ServiceContext == null)
{
_ServiceContext = new AppContextExt();
}
}
}
return _ServiceContext;
}
///
/// 注入Service到上下文
///
/// 接口对象
/// Service对象
/// 服务实例更新时订阅的消息
public static void RegisterService(T t, Action
使用:
AppContextExt.GetInstance().Start();
AppContextExt.RegisterAssemblyServices(AppDomain.CurrentDomain.BaseDirectory + "ModuleService.dll");
ILogService svr = AppContextExt.Resolve();
if (svr != null)
svr.LogInfo("OK");
解决方案截图:
C#自定义应用程序上下文对象+IOC自己实现依赖注入
标签:create catch ext.get nts art ado void summary 项目
原文地址:https://www.cnblogs.com/datacool/p/datacool_AppContext_IOC.html
评论