Exemple #1
0
 /// <summary>
 /// Appends the specified predict.
 /// </summary>
 /// <param name="predict">The predict.</param>
 public void Append(ParameterlessFunctionInjection <T> predict)
 {
     if (predict != null)
     {
         _injectionChain.Add(predict);
     }
 }
Exemple #2
0
 /// <summary>
 /// Prepends the specified predict.
 /// </summary>
 /// <param name="predict">The predict.</param>
 public void Prepend(ParameterlessFunctionInjection <T> predict)
 {
     if (predict != null)
     {
         _injectionChain.Insert(0, predict);
     }
 }
        /// <summary>
        /// Initializes the default function injection.
        /// </summary>
        private static void InitializeDefaultFunctionInjection()
        {
            ParameterlessFunctionInjection <CultureInfo> injection = delegate()
            {
                return(_resourceHub?.DefaultCultureInfo);
            };

            GetCurrentCultureInfo = new ParameterlessPrioritizedFunctionInjection <CultureInfo>(injection);
        }
Exemple #4
0
        /// <summary>
        /// Applies the injection.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="staticType">Type of the static.</param>
        /// <param name="propertyName">Name of the property.</param>
        /// <param name="injectionCandidate">The injection candidate.</param>
        /// <param name="expectAsLowPriority">if set to <c>true</c> [expect as low priority].</param>
        public static void ApplyInjection <T>(Type staticType, string propertyName, ParameterlessFunctionInjection <T> injectionCandidate, bool expectAsLowPriority = false)
        {
            if (staticType != null && !string.IsNullOrWhiteSpace(propertyName) && injectionCandidate != null)
            {
                var hitProperty = staticType.GetProperties(BindingFlags.Static | BindingFlags.Public | BindingFlags.GetProperty).FirstOrDefault(x => x.Name == propertyName);
                if (hitProperty != null)
                {
                    if (typeof(ParameterlessPrioritizedFunctionInjection <T>).IsAssignableFrom(hitProperty.PropertyType))
                    {
                        ParameterlessPrioritizedFunctionInjection <T> existed = hitProperty.GetValue(null) as ParameterlessPrioritizedFunctionInjection <T>;
                        if (existed == null)
                        {
                            if (hitProperty.SetMethod != null)
                            {
                                existed = new ParameterlessPrioritizedFunctionInjection <T>();
                                hitProperty.SetValue(null, existed);
                            }
                            else
                            {
                                throw ExceptionFactory.CreateInvalidObjectException(hitProperty?.Name, new { type = staticType?.FullName, property = hitProperty?.Name });
                            }
                        }

                        if (expectAsLowPriority)
                        {
                            existed.Append(injectionCandidate);
                        }
                        else
                        {
                            existed.Prepend(injectionCandidate);
                        }
                    }
                    else if (hitProperty.PropertyType == typeof(ParameterlessFunctionInjection <>).MakeGenericType(typeof(T)))
                    {
                        hitProperty.SetValue(null, injectionCandidate);
                    }
                }
            }
        }
Exemple #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ParameterlessPrioritizedFunctionInjection{T}" /> class.
 /// </summary>
 /// <param name="defaultInjection">The default injection.</param>
 /// <param name="isStatic">if set to <c>true</c> [is static].</param>
 public ParameterlessPrioritizedFunctionInjection(ParameterlessFunctionInjection <T> defaultInjection, bool isStatic = false)
 {
     _injectionChain.AddIfNotNull(defaultInjection);
     _isStatic = isStatic;
 }