| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | namespace Caliburn.Micro.Core {    using System;    using System.Linq;    using System.Collections.Generic;    /// <summary>    /// Used by the framework to pull instances from an IoC container and to inject dependencies into certain existing classes.    /// </summary>    public static class IoC {        /// <summary>        /// Gets an instance by type and key.        /// </summary>        public static Func<Type, string, object> GetInstance = (service, key) => { throw new InvalidOperationException("IoC is not initialized."); };        /// <summary>        /// Gets all instances of a particular type.        /// </summary>        public static Func<Type, IEnumerable<object>> GetAllInstances = service => { throw new InvalidOperationException("IoC is not initialized."); };        /// <summary>        /// Passes an existing instance to the IoC container to enable dependencies to be injected.        /// </summary>        public static Action<object> BuildUp = instance => { throw new InvalidOperationException("IoC is not initialized."); };        /// <summary>        /// Gets an instance from the container.        /// </summary>        /// <typeparam name="T">The type to resolve.</typeparam>        /// <param name="key">The key to look up.</param>        /// <returns>The resolved instance.</returns>        public static T Get<T>(string key = null) {            return (T)GetInstance(typeof(T), key);        }        /// <summary>        /// Gets all instances of a particular type.        /// </summary>        /// <typeparam name="T">The type to resolve.</typeparam>        /// <returns>The resolved instances.</returns>        public static IEnumerable<T> GetAll<T>() {            return GetAllInstances(typeof(T)).Cast<T>();        }    }}
 |