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); } }); }
static bool ConditionComparer <T>(T source, T target, ConditionComparer comparer) { switch (comparer) { default: case Injection.ConditionComparer.Equals: return(PEqualityComparer <T> .Default.Equals(source, target)); case Injection.ConditionComparer.NotEquals: return(!PEqualityComparer <T> .Default.Equals(source, target)); } }
public ConditionAttribute(string fieldName, ConditionComparer comp, ulong value) { FieldName = fieldName; Comparer = comp; Value = value; }
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 IBinding When(ConditionSource source, ConditionComparer comparer, object target) { return(When(ToCondition(source, comparer, target))); }