Code:
/ 4.0 / 4.0 / untmp / 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.representing the result of the binding.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CursorConverter.cs
- RoutingBehavior.cs
- SkipStoryboardToFill.cs
- DataRow.cs
- DateTimeValueSerializerContext.cs
- CroppedBitmap.cs
- ArrangedElementCollection.cs
- SQLDateTimeStorage.cs
- WebPartTransformerCollection.cs
- DataServiceQueryException.cs
- KeyValueInternalCollection.cs
- MethodCallConverter.cs
- InputMethod.cs
- PropertyHelper.cs
- DiscoveryReference.cs
- RegistryPermission.cs
- ConnectionPoint.cs
- TimeManager.cs
- MenuItemStyleCollection.cs
- OleDbReferenceCollection.cs
- SqlOuterApplyReducer.cs
- OrderedDictionaryStateHelper.cs
- LineSegment.cs
- SelectorItemAutomationPeer.cs
- HtmlButton.cs
- CheckBoxDesigner.cs
- XhtmlTextWriter.cs
- RolePrincipal.cs
- BaseCollection.cs
- UriTemplateVariablePathSegment.cs
- Helpers.cs
- AccessControlList.cs
- XmlSchemaNotation.cs
- ClientSideQueueItem.cs
- UseLicense.cs
- PropertyEmitter.cs
- ColorConvertedBitmap.cs
- BmpBitmapEncoder.cs
- SharedPersonalizationStateInfo.cs
- ClientRuntimeConfig.cs
- SettingsBase.cs
- UIntPtr.cs
- WebPartsPersonalization.cs
- HierarchicalDataTemplate.cs
- LayoutEditorPart.cs
- AutomationPropertyInfo.cs
- OutOfProcStateClientManager.cs
- GraphicsPathIterator.cs
- ExpressionContext.cs
- CalendarDateChangedEventArgs.cs
- PrtTicket_Public_Simple.cs
- _TransmitFileOverlappedAsyncResult.cs
- OdbcCommandBuilder.cs
- FtpWebResponse.cs
- DataSysAttribute.cs
- followingquery.cs
- ComponentEditorPage.cs
- ControlBuilderAttribute.cs
- DeferredReference.cs
- ActivityExecutionContextCollection.cs
- BindingElementExtensionElement.cs
- Resources.Designer.cs
- BindingNavigator.cs
- TableStyle.cs
- SectionXmlInfo.cs
- BypassElement.cs
- SafeFindHandle.cs
- AddressHeaderCollection.cs
- SwitchElementsCollection.cs
- DesignerCatalogPartChrome.cs
- VSWCFServiceContractGenerator.cs
- CustomPopupPlacement.cs
- FlowPosition.cs
- RenderCapability.cs
- __ConsoleStream.cs
- ClaimTypes.cs
- NameGenerator.cs
- DesignerView.cs
- ProtectedConfigurationSection.cs
- SeparatorAutomationPeer.cs
- SerialErrors.cs
- TrackingServices.cs
- DynamicResourceExtensionConverter.cs
- AssemblyContextControlItem.cs
- KeyProperty.cs
- PathStreamGeometryContext.cs
- BinaryMethodMessage.cs
- mansign.cs
- SimpleTypesSurrogate.cs
- UniqueIdentifierService.cs
- InlinedLocationReference.cs
- ZipPackagePart.cs
- LinqDataSourceSelectEventArgs.cs
- BypassElement.cs
- AsnEncodedData.cs
- EventLogInformation.cs
- RSAPKCS1SignatureDeformatter.cs
- FilterableAttribute.cs
- DockEditor.cs
- BoolExpression.cs