/// <summary> /// Answer the value associated with <paramref name="name"/>. /// </summary> /// <typeparam name="T">The type of the value associated with name.</typeparam> /// <param name="name">The name of the value to answer.</param> /// <returns></returns> public virtual T ReadFrom <T>(string name) { var supplier = GetRequiredSupplier <T>(name); until.Completes(); lock (@lock) { return(supplier.Invoke()); } }
/// <summary> /// Answer the value associated with <paramref name="name"/>. /// </summary> /// <typeparam name="T">The type of the value associated with name.</typeparam> /// <param name="name">The name of the value to answer.</param> /// <returns></returns> public virtual T ReadFrom <T>(string name) { if (!suppliers.ContainsKey(name)) { throw new ArgumentOutOfRangeException(nameof(name), $"Unknow supplier: {name}"); } until.Completes(); lock (@lock) { return((suppliers[name] as Func <T>).Invoke()); } }