protected BindAttributeBase(BindScope bindingScope, ConditionSource conditionSource, ConditionComparer conditionComparer, object conditionTarget) : this(bindingScope) { ConditionSource = conditionSource; ConditionComparer = conditionComparer; ConditionTarget = conditionTarget; }
protected BindAttributeBase(BindScope bindingScope, ConditionSource conditionSource, ConditionComparer conditionComparer, object conditionTarget) : this(bindingScope) { ConditionSource = conditionSource; ConditionComparer = conditionComparer; ConditionTarget = conditionTarget; }
static Predicate <InjectionContext> ToCondition(ConditionSource source, ConditionComparer comparer, object target) { return(c => { switch (source) { default: case ConditionSource.Container: return ConditionComparer(c.Container, (IContainer)target, comparer); case ConditionSource.Element: return ConditionComparer(c.Element, (IInjectableElement)target, comparer); case ConditionSource.ContextType: return ConditionComparer(c.Type, (ContextTypes)target, comparer); case ConditionSource.Instance: return ConditionComparer(c.Instance, target, comparer); case ConditionSource.ContractType: return ConditionComparer(c.ContractType, (Type)target, comparer); case ConditionSource.DeclaringType: return ConditionComparer(c.DeclaringType, (Type)target, comparer); case ConditionSource.Identifier: return ConditionComparer(c.Identifier, (string)target, comparer); case ConditionSource.Optional: return ConditionComparer(c.Optional, (bool)target, comparer); } }); }
public Expression GetLeftHandExpression(Expression root) { var sourceTokens = ConditionSource.Split('.'); foreach (var token in sourceTokens) { var tokenProperty = root.Type.GetProperty(token); if (tokenProperty == null) { throw new InvalidOperationException(string.Format("Cannot find property '{0}' in path '{1}' for root node of type {2}.", token, ConditionSource, root.Type.ToString())); } root = Expression.MakeMemberAccess(root, root.Type.GetProperty(token)); } return(root); }
public BindAllAttribute(BindScope bindingScope, ConditionSource conditionSource, ConditionComparer conditionComparer, object conditionTarget) : base(bindingScope, conditionSource, conditionComparer, conditionTarget) { }
public BindAllAttribute(BindScope bindingScope, ConditionSource conditionSource, ConditionComparer conditionComparer, object conditionTarget) : base(bindingScope, conditionSource, conditionComparer, conditionTarget) { }
public BindAttribute(Type contractType, Type[] baseTypes, BindScope bindingScope, ConditionSource conditionSource, ConditionComparer conditionComparer, object conditionTarget) : base(bindingScope, conditionSource, conditionComparer, conditionTarget) { ContractType = contractType; BaseTypes = baseTypes; }
public BindAttribute(Type contractType, BindScope bindingScope, ConditionSource conditionSource, ConditionComparer conditionComparer, object conditionTarget) : this(contractType, Type.EmptyTypes, bindingScope, conditionSource, conditionComparer, conditionTarget) { }
public BindAttribute(Type contractType, Type[] baseTypes, BindScope bindingScope, ConditionSource conditionSource, ConditionComparer conditionComparer, object conditionTarget) : base(bindingScope, conditionSource, conditionComparer, conditionTarget) { ContractType = contractType; BaseTypes = baseTypes; }
public BindAttribute(Type contractType, BindScope bindingScope, ConditionSource conditionSource, ConditionComparer conditionComparer, object conditionTarget) : this(contractType, Type.EmptyTypes, bindingScope, conditionSource, conditionComparer, conditionTarget) { }
public IBinding When(ConditionSource source, ConditionComparer comparer, object target) { return(When(ToCondition(source, comparer, target))); }