コード例 #1
0
 public Container(StObjEngineConfigureContext c)
 {
     _c                = c;
     _baseForConfig    = new SimpleServiceContainer();
     _defaultActivator = new SimpleObjectActivator();
     _baseForConfig.Add(_defaultActivator);
     BaseProvider = _baseForConfig;
 }
コード例 #2
0
        /// <summary>
        /// Attempts to locate a <see cref="ISimpleObjectActivator"/> service or falls back to
        /// a default <see cref="SimpleObjectActivator"/> and calls <see cref="ISimpleObjectActivator.Create"/>
        /// on it.
        /// Returns null on error.
        /// </summary>
        /// <param name="this">This <see cref="IServiceProvider"/>.</param>
        /// <param name="monitor">The monitor to use.</param>
        /// <param name="t">Type to instantiate.</param>
        /// <param name="requiredParameters">Optional required parameters.</param>
        /// <returns>A new instance on success, null on error.</returns>
        public static object?SimpleObjectCreate(this IServiceProvider @this, IActivityMonitor monitor, Type t, params object[] requiredParameters)
        {
            if (monitor == null)
            {
                throw new ArgumentNullException(nameof(monitor));
            }
            ISimpleObjectActivator activator = @this.GetService <ISimpleObjectActivator>(false);

            if (activator == null)
            {
                monitor.Info("No registered ISimpleObjectActivator found. Using transient new SimpleObjectActivator().");
                activator = new SimpleObjectActivator();
            }
            return(activator.Create(monitor, t, @this, requiredParameters));
        }