コード例 #1
0
 public static CloudStorageBase Get()
 {
     if (Handler == null)
     {
         lock (LockObj)
         {
             if (Handler == null)
             {
                 Assembly[] LoadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
                 foreach (var Dll in LoadedAssemblies)
                 {
                     Type[] AllTypes = Dll.GetTypes();
                     foreach (var PotentialConfigType in AllTypes)
                     {
                         if (PotentialConfigType != typeof(CloudStorageBase) && typeof(CloudStorageBase).IsAssignableFrom(PotentialConfigType))
                         {
                             Handler = Activator.CreateInstance(PotentialConfigType) as CloudStorageBase;
                             break;
                         }
                     }
                 }
             }
         }
         if (Handler == null)
         {
             throw new AutomationException("Attempt to use CloudStorageBase.Get() and it doesn't appear that there are any modules that implement this class.");
         }
     }
     return(Handler);
 }
コード例 #2
0
        private static CloudStorageBase GetByNameImpl(string InstanceName)
        {
            CloudStorageBase Result = null;

            if (!Handlers.TryGetValue(InstanceName, out Result))
            {
                lock (LockObj)
                {
                    if (Handlers.ContainsKey(InstanceName))
                    {
                        Result = Handlers[InstanceName];
                    }
                    else
                    {
                        Assembly[] LoadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
                        foreach (var Dll in LoadedAssemblies)
                        {
                            Type[] AllTypes = Dll.GetTypes();
                            foreach (var PotentialConfigType in AllTypes)
                            {
                                if (PotentialConfigType != typeof(CloudStorageBase) && typeof(CloudStorageBase).IsAssignableFrom(PotentialConfigType))
                                {
                                    Result = Activator.CreateInstance(PotentialConfigType) as CloudStorageBase;
                                    Handlers.Add(InstanceName, Result);
                                    break;
                                }
                            }
                        }
                    }
                }
                if (Result == null)
                {
                    throw new AutomationException("Could not find any modules which provide an implementation of CloudStorageBase.");
                }
            }
            return(Result);
        }