コード例 #1
0
 /// <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);
         }
     }
 }