/// <summary> /// 获取单例对象 /// </summary> /// <param name="serviceProvider"></param> /// <param name="record"></param> /// <returns></returns> internal object GetSingleton(IServiceProvider serviceProvider, TypeRecord record) { if (record.BuildFlag) { var obj = record.GetInstacne(serviceProvider); if (singleton.Contains(record.ID) == false) { objects.Add(new ObjectContainer(obj, ServiceLifetime.Singleton)); } return(obj); } else { var key = GenerateTempKey(serviceProvider, record, record.ImplementationType); if (singleton.Contains(key)) { return(objects.First(p => p.ID == key).Instance); } else { var obj = record.GetInstacne(serviceProvider); this.singleton.Add(key); this.objects.Add(new ObjectContainer(obj, ServiceLifetime.Singleton, key)); return(obj); } } }