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>();
- }
- }
- }
|