Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / Microsoft / Scripting / Actions / BinaryOperationBinder.cs / 1305376 / BinaryOperationBinder.cs
/* **************************************************************************** * * Copyright (c) Microsoft Corporation. * * This source code is subject to terms and conditions of the Microsoft Public License. A * copy of the license can be found in the License.html file at the root of this distribution. If * you cannot locate the Microsoft Public License, please send an email to * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound * by the terms of the Microsoft Public License. * * You must not remove this notice, or any other, from this software. * * * ***************************************************************************/ using System.Dynamic.Utils; using System.Linq.Expressions; namespace System.Dynamic { ////// Represents the binary dynamic operation at the call site, providing the binding semantic and the details about the operation. /// public abstract class BinaryOperationBinder : DynamicMetaObjectBinder { private ExpressionType _operation; ////// Initializes a new instance of the /// The binary operation kind. protected BinaryOperationBinder(ExpressionType operation) { ContractUtils.Requires(OperationIsValid(operation), "operation"); _operation = operation; } ///class. /// /// The result type of the operation. /// public override sealed Type ReturnType { get { return typeof(object); } } ////// The binary operation kind. /// public ExpressionType Operation { get { return _operation; } } ////// Performs the binding of the binary dynamic operation if the target dynamic object cannot bind. /// /// The target of the dynamic binary operation. /// The right hand side operand of the dynamic binary operation. ///The public DynamicMetaObject FallbackBinaryOperation(DynamicMetaObject target, DynamicMetaObject arg) { return FallbackBinaryOperation(target, arg, null); } ///representing the result of the binding. /// When overridden in the derived class, performs the binding of the binary dynamic operation if the target dynamic object cannot bind. /// /// The target of the dynamic binary operation. /// The right hand side operand of the dynamic binary operation. /// The binding result in case the binding fails, or null. ///The public abstract DynamicMetaObject FallbackBinaryOperation(DynamicMetaObject target, DynamicMetaObject arg, DynamicMetaObject errorSuggestion); ///representing the result of the binding. /// Performs the binding of the dynamic binary operation. /// /// The target of the dynamic operation. /// An array of arguments of the dynamic operation. ///The public sealed override DynamicMetaObject Bind(DynamicMetaObject target, DynamicMetaObject[] args) { ContractUtils.RequiresNotNull(target, "target"); ContractUtils.RequiresNotNull(args, "args"); ContractUtils.Requires(args.Length == 1, "args"); var arg0 = args[0]; ContractUtils.RequiresNotNull(arg0, "args"); return target.BindBinaryOperation(this, arg0); } // this is a standard DynamicMetaObjectBinder internal override sealed bool IsStandardBinder { get { return true; } } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] internal static bool OperationIsValid(ExpressionType operation) { switch (operation) { #region Generated Binary Operation Binder Validator // *** BEGIN GENERATED CODE *** // generated by function: gen_binop_validator from: generate_tree.py case ExpressionType.Add: case ExpressionType.And: case ExpressionType.Divide: case ExpressionType.Equal: case ExpressionType.ExclusiveOr: case ExpressionType.GreaterThan: case ExpressionType.GreaterThanOrEqual: case ExpressionType.LeftShift: case ExpressionType.LessThan: case ExpressionType.LessThanOrEqual: case ExpressionType.Modulo: case ExpressionType.Multiply: case ExpressionType.NotEqual: case ExpressionType.Or: case ExpressionType.Power: case ExpressionType.RightShift: case ExpressionType.Subtract: case ExpressionType.AddAssign: case ExpressionType.AndAssign: case ExpressionType.DivideAssign: case ExpressionType.ExclusiveOrAssign: case ExpressionType.LeftShiftAssign: case ExpressionType.ModuloAssign: case ExpressionType.MultiplyAssign: case ExpressionType.OrAssign: case ExpressionType.PowerAssign: case ExpressionType.RightShiftAssign: case ExpressionType.SubtractAssign: // *** END GENERATED CODE *** #endregion case ExpressionType.Extension: return true; default: return false; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.representing the result of the binding.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Tracer.cs
- XmlWrappingReader.cs
- DoubleConverter.cs
- WebBrowsableAttribute.cs
- DataExpression.cs
- DbMetaDataFactory.cs
- CommandConverter.cs
- FileDialog_Vista.cs
- FocusWithinProperty.cs
- x509utils.cs
- exports.cs
- SelectedDatesCollection.cs
- NativeRightsManagementAPIsStructures.cs
- AmbiguousMatchException.cs
- WsdlInspector.cs
- ViewEvent.cs
- TypeConverterAttribute.cs
- XpsPackagingException.cs
- ProfileProvider.cs
- IIS7UserPrincipal.cs
- InstanceKeyNotReadyException.cs
- DataControlCommands.cs
- ListViewEditEventArgs.cs
- NullableDecimalSumAggregationOperator.cs
- VisualBrush.cs
- ContextStaticAttribute.cs
- QueryInterceptorAttribute.cs
- PreApplicationStartMethodAttribute.cs
- OLEDB_Enum.cs
- ApplicationServiceHelper.cs
- WebExceptionStatus.cs
- SqlDataSourceFilteringEventArgs.cs
- ToolStripSplitButton.cs
- OpenTypeLayout.cs
- XamlSerializerUtil.cs
- FormCollection.cs
- UInt64Storage.cs
- DbBuffer.cs
- ADMembershipProvider.cs
- CompositeActivityValidator.cs
- InternalCache.cs
- UriTemplateClientFormatter.cs
- nulltextcontainer.cs
- EntityTransaction.cs
- QueryableDataSourceView.cs
- PaintEvent.cs
- SortExpressionBuilder.cs
- JulianCalendar.cs
- GenericUriParser.cs
- EntityProviderFactory.cs
- EmptyEnumerator.cs
- CancelEventArgs.cs
- DocumentViewerConstants.cs
- SqlUtil.cs
- App.cs
- QuaternionConverter.cs
- XmlAttributeProperties.cs
- XmlSchemaValidator.cs
- ListBindingHelper.cs
- MissingManifestResourceException.cs
- ExpressionBindings.cs
- MultiByteCodec.cs
- RuntimeWrappedException.cs
- Attributes.cs
- Descriptor.cs
- WriteTimeStream.cs
- HtmlFormWrapper.cs
- FileSystemEventArgs.cs
- FramingChannels.cs
- EqualityComparer.cs
- SafeReadContext.cs
- WebBaseEventKeyComparer.cs
- SrgsToken.cs
- PathData.cs
- TaiwanCalendar.cs
- Button.cs
- FixedSOMGroup.cs
- _ListenerResponseStream.cs
- ConfigurationException.cs
- WorkflowValidationFailedException.cs
- Paragraph.cs
- JoinElimination.cs
- SecurityTokenProvider.cs
- QilCloneVisitor.cs
- Color.cs
- DataReceivedEventArgs.cs
- FormViewPageEventArgs.cs
- QilLoop.cs
- TreeNode.cs
- TemplateContent.cs
- ReadWriteObjectLock.cs
- ExtractedStateEntry.cs
- M3DUtil.cs
- ReflectionHelper.cs
- SplitContainerDesigner.cs
- OleDbRowUpdatingEvent.cs
- ResourceProviderFactory.cs
- LayoutEngine.cs
- MatrixAnimationUsingKeyFrames.cs
- HelpEvent.cs