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
- XPathNodeIterator.cs
- ConstraintStruct.cs
- MetafileHeader.cs
- WebPartEditorApplyVerb.cs
- FileUtil.cs
- AdRotatorDesigner.cs
- SQLDateTime.cs
- Model3DGroup.cs
- MD5CryptoServiceProvider.cs
- mda.cs
- ObjectKeyFrameCollection.cs
- ManipulationInertiaStartingEventArgs.cs
- AutomationPattern.cs
- ConfigurationCollectionAttribute.cs
- AssociatedControlConverter.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- XmlNodeList.cs
- ColorIndependentAnimationStorage.cs
- TextRangeAdaptor.cs
- FixedPage.cs
- ClrPerspective.cs
- PathFigure.cs
- DBDataPermission.cs
- Util.cs
- CapabilitiesState.cs
- ArraySegment.cs
- ConstraintCollection.cs
- SystemWebCachingSectionGroup.cs
- SqlWorkflowInstanceStore.cs
- documentsequencetextview.cs
- SortedDictionary.cs
- OdbcReferenceCollection.cs
- LinkUtilities.cs
- ImportedNamespaceContextItem.cs
- Translator.cs
- peernodeimplementation.cs
- Aes.cs
- DataConnectionHelper.cs
- StrokeDescriptor.cs
- ExtensionDataObject.cs
- RsaSecurityTokenParameters.cs
- MutexSecurity.cs
- ThreadExceptionEvent.cs
- AtomEntry.cs
- DataRowView.cs
- TextRunTypographyProperties.cs
- Serializer.cs
- InputLanguageSource.cs
- CallInfo.cs
- AspNetHostingPermission.cs
- SelectionProcessor.cs
- ShadowGlyph.cs
- MimeMapping.cs
- InfiniteIntConverter.cs
- Base64Encoder.cs
- Geometry.cs
- GraphicsPathIterator.cs
- ConnectionStringSettings.cs
- InputQueue.cs
- HyperLinkStyle.cs
- EndpointDispatcher.cs
- RelationshipEntry.cs
- FixedStringLookup.cs
- IssuedTokenParametersEndpointAddressElement.cs
- AppDomainProtocolHandler.cs
- OleDbParameter.cs
- SessionEndingCancelEventArgs.cs
- IdnElement.cs
- CodeAttributeDeclaration.cs
- Base64Encoder.cs
- ResourceCategoryAttribute.cs
- TextContainerHelper.cs
- DeleteCardRequest.cs
- MethodExpression.cs
- KeyInterop.cs
- Context.cs
- MaskedTextProvider.cs
- DateRangeEvent.cs
- ViewStateAttachedPropertyFeature.cs
- SafeViewOfFileHandle.cs
- DiscreteKeyFrames.cs
- CompilerTypeWithParams.cs
- LoginNameDesigner.cs
- FragmentQueryKB.cs
- ProvideValueServiceProvider.cs
- SettingsPropertyValueCollection.cs
- IntSecurity.cs
- connectionpool.cs
- SafeSerializationManager.cs
- DbParameterCollection.cs
- AssemblyBuilder.cs
- TransformGroup.cs
- DataBinder.cs
- VisualStyleInformation.cs
- ProxyFragment.cs
- NonClientArea.cs
- AsyncDataRequest.cs
- MissingMethodException.cs
- SmtpClient.cs
- ImageField.cs