Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / Microsoft / Scripting / Actions / UnaryOperationBinder.cs / 1305376 / UnaryOperationBinder.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 unary dynamic operation at the call site, providing the binding semantic and the details about the operation. /// public abstract class UnaryOperationBinder : DynamicMetaObjectBinder { private ExpressionType _operation; ////// Initializes a new instance of the /// The unary operation kind. protected UnaryOperationBinder(ExpressionType operation) { ContractUtils.Requires(OperationIsValid(operation), "operation"); _operation = operation; } ///class. /// /// The result type of the operation. /// public override sealed Type ReturnType { get { switch(_operation) { case ExpressionType.IsFalse: case ExpressionType.IsTrue: return typeof(bool); default: return typeof(object); } } } ////// The unary operation kind. /// public ExpressionType Operation { get { return _operation; } } ////// Performs the binding of the unary dynamic operation if the target dynamic object cannot bind. /// /// The target of the dynamic unary operation. ///The public DynamicMetaObject FallbackUnaryOperation(DynamicMetaObject target) { return FallbackUnaryOperation(target, null); } ///representing the result of the binding. /// Performs the binding of the unary dynamic operation if the target dynamic object cannot bind. /// /// The target of the dynamic unary operation. /// The binding result in case the binding fails, or null. ///The public abstract DynamicMetaObject FallbackUnaryOperation(DynamicMetaObject target, DynamicMetaObject errorSuggestion); ///representing the result of the binding. /// Performs the binding of the dynamic unary 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.Requires(args == null || args.Length == 0, "args"); return target.BindUnaryOperation(this); } // this is a standard DynamicMetaObjectBinder internal override sealed bool IsStandardBinder { get { return true; } } internal static bool OperationIsValid(ExpressionType operation) { switch (operation) { #region Generated Unary Operation Binder Validator // *** BEGIN GENERATED CODE *** // generated by function: gen_unop_validator from: generate_tree.py case ExpressionType.Negate: case ExpressionType.UnaryPlus: case ExpressionType.Not: case ExpressionType.Decrement: case ExpressionType.Increment: case ExpressionType.OnesComplement: case ExpressionType.IsTrue: case ExpressionType.IsFalse: // *** 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. /* **************************************************************************** * * 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 { ///representing the result of the binding. /// Represents the unary dynamic operation at the call site, providing the binding semantic and the details about the operation. /// public abstract class UnaryOperationBinder : DynamicMetaObjectBinder { private ExpressionType _operation; ////// Initializes a new instance of the /// The unary operation kind. protected UnaryOperationBinder(ExpressionType operation) { ContractUtils.Requires(OperationIsValid(operation), "operation"); _operation = operation; } ///class. /// /// The result type of the operation. /// public override sealed Type ReturnType { get { switch(_operation) { case ExpressionType.IsFalse: case ExpressionType.IsTrue: return typeof(bool); default: return typeof(object); } } } ////// The unary operation kind. /// public ExpressionType Operation { get { return _operation; } } ////// Performs the binding of the unary dynamic operation if the target dynamic object cannot bind. /// /// The target of the dynamic unary operation. ///The public DynamicMetaObject FallbackUnaryOperation(DynamicMetaObject target) { return FallbackUnaryOperation(target, null); } ///representing the result of the binding. /// Performs the binding of the unary dynamic operation if the target dynamic object cannot bind. /// /// The target of the dynamic unary operation. /// The binding result in case the binding fails, or null. ///The public abstract DynamicMetaObject FallbackUnaryOperation(DynamicMetaObject target, DynamicMetaObject errorSuggestion); ///representing the result of the binding. /// Performs the binding of the dynamic unary 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.Requires(args == null || args.Length == 0, "args"); return target.BindUnaryOperation(this); } // this is a standard DynamicMetaObjectBinder internal override sealed bool IsStandardBinder { get { return true; } } internal static bool OperationIsValid(ExpressionType operation) { switch (operation) { #region Generated Unary Operation Binder Validator // *** BEGIN GENERATED CODE *** // generated by function: gen_unop_validator from: generate_tree.py case ExpressionType.Negate: case ExpressionType.UnaryPlus: case ExpressionType.Not: case ExpressionType.Decrement: case ExpressionType.Increment: case ExpressionType.OnesComplement: case ExpressionType.IsTrue: case ExpressionType.IsFalse: // *** 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
- Invariant.cs
- RemotingConfigParser.cs
- CharAnimationBase.cs
- StorageComplexPropertyMapping.cs
- AccessControlList.cs
- BinaryFormatterSinks.cs
- StylusEventArgs.cs
- StylusCaptureWithinProperty.cs
- LicenseException.cs
- IndexerNameAttribute.cs
- basevalidator.cs
- Point.cs
- StrongNameUtility.cs
- SafeNativeMethods.cs
- TextReader.cs
- ControlAdapter.cs
- BamlStream.cs
- SEHException.cs
- MetadataItem.cs
- DataListCommandEventArgs.cs
- MaskedTextProvider.cs
- PartialArray.cs
- XamlPointCollectionSerializer.cs
- SchemaNotation.cs
- DoubleUtil.cs
- ActivityDesignerHelper.cs
- ToolboxBitmapAttribute.cs
- SQLSingleStorage.cs
- Shape.cs
- CompressedStack.cs
- ExpandSegment.cs
- ServiceOperationInvoker.cs
- DbConnectionPoolCounters.cs
- ValidationHelper.cs
- AsymmetricSignatureDeformatter.cs
- BaseTemplateParser.cs
- ErrorFormatterPage.cs
- MeshGeometry3D.cs
- KeyFrames.cs
- LoadWorkflowByInstanceKeyCommand.cs
- DataSourceControlBuilder.cs
- CustomError.cs
- DbBuffer.cs
- StylusOverProperty.cs
- WebZone.cs
- FileStream.cs
- TextModifierScope.cs
- ObjectView.cs
- SystemParameters.cs
- TreeSet.cs
- ToolStripItemClickedEventArgs.cs
- SqlGatherProducedAliases.cs
- XmlILStorageConverter.cs
- BufferModeSettings.cs
- ProxyWebPartManager.cs
- NodeLabelEditEvent.cs
- TextServicesContext.cs
- LayoutSettings.cs
- DesignUtil.cs
- DataFormats.cs
- HandleCollector.cs
- ParenthesizePropertyNameAttribute.cs
- XamlTreeBuilderBamlRecordWriter.cs
- HtmlUtf8RawTextWriter.cs
- BookmarkCallbackWrapper.cs
- NativeRecognizer.cs
- RangeBaseAutomationPeer.cs
- ToolStripSplitButton.cs
- SingleQueryOperator.cs
- XmlSchemaAnyAttribute.cs
- DocumentPaginator.cs
- FormViewUpdateEventArgs.cs
- TreeViewItemAutomationPeer.cs
- OletxResourceManager.cs
- X509SecurityTokenAuthenticator.cs
- unitconverter.cs
- XmlSchemaSimpleTypeRestriction.cs
- ControllableStoryboardAction.cs
- GB18030Encoding.cs
- AssemblyInfo.cs
- WorkflowViewElement.cs
- VisualStyleRenderer.cs
- AspNetCacheProfileAttribute.cs
- SoapIgnoreAttribute.cs
- IISUnsafeMethods.cs
- Int64KeyFrameCollection.cs
- ResourceContainer.cs
- PriorityBindingExpression.cs
- TriggerActionCollection.cs
- SerialPort.cs
- EntityCommandDefinition.cs
- SizeValueSerializer.cs
- CodeTypeParameter.cs
- MessageQueueTransaction.cs
- oledbmetadatacolumnnames.cs
- FontSizeConverter.cs
- PenThreadPool.cs
- DataTableClearEvent.cs
- GridErrorDlg.cs
- safelinkcollection.cs