private BindingMemberVisitor(BindingMemberVisitor innerVisitor, IEnumerable<string> lambdaParameters) : this() { _members = innerVisitor._members; _staticNodes = innerVisitor._staticNodes; if (innerVisitor._lamdaParameters != null) _lamdaParameters.AddRange(innerVisitor._lamdaParameters); _lamdaParameters.AddRange(lambdaParameters); BindingExtensions.CheckDuplicateLambdaParameter(_lamdaParameters); }
private BindingMemberVisitor(BindingMemberVisitor innerVisitor, IEnumerable<string> lambdaParameters, IDataContext context) : this() { _ignoreLambda = true; _members = innerVisitor._members; _staticNodes = innerVisitor._staticNodes; if (innerVisitor._lamdaParameters != null) _lamdaParameters.AddRange(innerVisitor._lamdaParameters); _lamdaParameters.AddRange(lambdaParameters); Context = context; BindingExtensions.CheckDuplicateLambdaParameter(_lamdaParameters); }
private BindingMemberVisitor(BindingMemberVisitor innerVisitor, IEnumerable <string> lambdaParameters) : this() { _members = innerVisitor._members; _staticNodes = innerVisitor._staticNodes; if (innerVisitor._lamdaParameters != null) { _lamdaParameters.AddRange(innerVisitor._lamdaParameters); } _lamdaParameters.AddRange(lambdaParameters); BindingExtensions.CheckDuplicateLambdaParameter(_lamdaParameters); }
private BindingMemberVisitor(BindingMemberVisitor innerVisitor, IEnumerable <string> lambdaParameters, IDataContext context) : this() { _ignoreLambda = true; _members = innerVisitor._members; _staticNodes = innerVisitor._staticNodes; if (innerVisitor._lamdaParameters != null) { _lamdaParameters.AddRange(innerVisitor._lamdaParameters); } _lamdaParameters.AddRange(lambdaParameters); Context = context; BindingExtensions.CheckDuplicateLambdaParameter(_lamdaParameters); }
public BindingParser() { _cache = new Dictionary<string, KeyValuePair<KeyValuePair<string, int>, Action<IDataContext>[]>[]>(StringComparer.Ordinal); _defaultContext = new DataContext(); _handlers = new List<IBindingParserHandler> { new DefaultBindingParserHandler() }; _defaultTokenizer = new Tokenizer(true); _memberVisitor = new BindingMemberVisitor(); _counterVisitor = new ExpressionCounterVisitor(); _binaryOperationTokens = new Dictionary<TokenType, int> { {TokenType.QuestionDot, 101}, {TokenType.Asterisk, 100}, {TokenType.Slash, 100}, {TokenType.Percent, 100}, {TokenType.Plus, 99}, {TokenType.Minus, 99}, {TokenType.ExclamationEqual, 98}, {TokenType.GreaterThan, 98}, {TokenType.LessThan, 98}, {TokenType.GreaterThanEqual, 98}, {TokenType.LessThanEqual, 98}, {TokenType.Equal, 97}, {TokenType.DoubleEqual, 97}, {TokenType.Amphersand, 96}, {TokenType.Bar, 95}, {TokenType.DoubleAmphersand, 94}, {TokenType.DoubleBar, 93}, }; _unaryOperationTokens = new HashSet<TokenType> { TokenType.Minus, TokenType.Exclamation, TokenType.Tilde }; _bindingParameterToAction = new Dictionary<string, Func<BindingParser, IList<Action<IDataContext>>>>(StringComparer.OrdinalIgnoreCase) { {"Mode", parser => parser.GetBindingModeSetter()}, {"M", parser => parser.GetBindingModeSetter()}, {"ValidatesOnNotifyDataErrors", parser => parser.GetBehaviorSetter(ValidatesOnNotifyDataErrorsBehavior.Prototype)}, {"ValidatesOnErrors", parser => parser.GetBehaviorSetter(ValidatesOnNotifyDataErrorsBehavior.Prototype)}, {"ValidatesOnExceptions", parser => parser.GetBehaviorSetter(ValidatesOnExceptionsBehavior.Instance)}, {"Validate", parser => parser.GetBehaviorSetter(ValidatesOnNotifyDataErrorsBehavior.Prototype, ValidatesOnExceptionsBehavior.Instance)}, {"DefaultValueOnException", parser => parser.GetDefaultValueOnExceptionSetter()}, {"SetDefaultValue", parser => parser.GetDefaultValueOnExceptionSetter()}, {"Delay", parser => parser.GetDelaySetter(false)}, {"SourceDelay", parser => parser.GetDelaySetter(false)}, {"TargetDelay", parser => parser.GetDelaySetter(true)}, {"Converter", parser => parser.GetConverterSetter()}, {"Conv", parser => parser.GetConverterSetter()}, {"ConverterParameter", parser => parser.GetConverterParameterSetter()}, {"ConverterCulture", parser => parser.GetConverterCultureSetter()}, {"Fallback", parser => parser.GetFallbackSetter()}, {"TargetNullValue", parser => parser.GetTargetNullValueSetter()}, {AttachedMemberConstants.CommandParameter, parser => parser.GetCommandParameterSetter()}, {"Behavior", parser => parser.GetCustomBehaviorSetter()}, {nameof(BindingBuilderConstants.ToggleEnabledState), parser => parser.GetBoolValue(BindingBuilderConstants.ToggleEnabledState)}, {"ToggleEnabled", parser => parser.GetBoolValue(BindingBuilderConstants.ToggleEnabledState)}, {"DisableEqualityChecking", parser => parser.GetDisableEqualityChecking(null)}, {"TargetDisableEqualityChecking", parser => parser.GetDisableEqualityChecking(true)}, {"SourceDisableEqualityChecking", parser => parser.GetDisableEqualityChecking(false)}, {nameof(BindingBuilderConstants.HasStablePath), parser => parser.GetBoolValue(BindingBuilderConstants.HasStablePath) }, {nameof(BindingBuilderConstants.Observable), parser => parser.GetBoolValue(BindingBuilderConstants.Observable) }, {nameof(BindingBuilderConstants.Optional), parser => parser.GetBoolValue(BindingBuilderConstants.Optional) } }; _binaryOperationAliases = new Dictionary<string, TokenType>(StringComparer.OrdinalIgnoreCase) { {"and", TokenType.DoubleAmphersand}, {"or", TokenType.DoubleBar}, {"mod", TokenType.Percent} }; _unaryOperationAliases = new Dictionary<string, TokenType>(StringComparer.OrdinalIgnoreCase) { {"not", TokenType.Exclamation} }; _relativeSourceAliases = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { RelativeSourceExpressionNode.RelativeSourceType, "Relative", "Rel" }; _elementSourceAliases = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { RelativeSourceExpressionNode.ElementSourceType, "Element", "El" }; }