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
- safePerfProviderHandle.cs
- URLAttribute.cs
- TextTreeUndoUnit.cs
- SimpleBitVector32.cs
- backend.cs
- TextSearch.cs
- CompressionTransform.cs
- ProviderCollection.cs
- Attributes.cs
- DefaultObjectMappingItemCollection.cs
- SaveFileDialog.cs
- HtmlShim.cs
- Stack.cs
- BorderGapMaskConverter.cs
- OneOfElement.cs
- DataGridViewToolTip.cs
- ClientSession.cs
- NullReferenceException.cs
- MobileErrorInfo.cs
- WebPartConnectionsCloseVerb.cs
- WebPartCancelEventArgs.cs
- Size.cs
- ValueTypeFixupInfo.cs
- DeferredReference.cs
- milrender.cs
- SchemaElementDecl.cs
- DataGridTextBox.cs
- WebPartRestoreVerb.cs
- AttachmentCollection.cs
- TransformerInfoCollection.cs
- QueryContinueDragEvent.cs
- PartBasedPackageProperties.cs
- AsnEncodedData.cs
- SiteOfOriginContainer.cs
- Mapping.cs
- MessageQueueAccessControlEntry.cs
- WizardPanelChangingEventArgs.cs
- ReadOnlyNameValueCollection.cs
- CircleEase.cs
- AppDomainProtocolHandler.cs
- HttpResponseInternalWrapper.cs
- ScrollProviderWrapper.cs
- ThreadExceptionEvent.cs
- WSSecurityJan2004.cs
- FigureHelper.cs
- PageRequestManager.cs
- HttpDebugHandler.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- Point3DCollectionConverter.cs
- CriticalHandle.cs
- AspNetHostingPermission.cs
- XmlSchemaInferenceException.cs
- Rule.cs
- CodeAttributeArgumentCollection.cs
- CommandEventArgs.cs
- InheritedPropertyChangedEventArgs.cs
- ClientScriptManager.cs
- WSTrust.cs
- TypedTableHandler.cs
- RuntimeIdentifierPropertyAttribute.cs
- CacheDependency.cs
- SecurityElement.cs
- RegexMatch.cs
- sqlmetadatafactory.cs
- PenLineJoinValidation.cs
- TransformerInfo.cs
- Evaluator.cs
- AmbientLight.cs
- ListenerSingletonConnectionReader.cs
- WebScriptEnablingBehavior.cs
- Normalization.cs
- Hash.cs
- GridViewRow.cs
- DbConnectionPoolGroupProviderInfo.cs
- OletxVolatileEnlistment.cs
- RequestCacheEntry.cs
- Module.cs
- HttpWrapper.cs
- BulletDecorator.cs
- SessionStateContainer.cs
- RuleSettingsCollection.cs
- SqlConnectionPoolGroupProviderInfo.cs
- TypeSystem.cs
- DuplexChannelFactory.cs
- InkPresenter.cs
- UrlMapping.cs
- AlgoModule.cs
- MetadataItem_Static.cs
- BaseTypeViewSchema.cs
- ScrollableControl.cs
- _ShellExpression.cs
- UInt64Converter.cs
- TranslateTransform3D.cs
- SByteConverter.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- BindingsCollection.cs
- FormViewPagerRow.cs
- Rule.cs
- Dispatcher.cs
- Zone.cs