Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / Microsoft / Scripting / Ast / ConstantExpression.cs / 1305376 / ConstantExpression.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.Diagnostics; using System.Dynamic.Utils; #if SILVERLIGHT using System.Core; #endif namespace System.Linq.Expressions { ////// Represents an expression that has a constant value. /// #if !SILVERLIGHT [DebuggerTypeProxy(typeof(Expression.ConstantExpressionProxy))] #endif public class ConstantExpression : Expression { // Possible optimization: we could have a Constantsubclass that // stores the unboxed value. private readonly object _value; internal ConstantExpression(object value) { _value = value; } internal static ConstantExpression Make(object value, Type type) { if ((value == null && type == typeof(object)) || (value != null && value.GetType() == type)) { return new ConstantExpression(value); } else { return new TypedConstantExpression(value, type); } } /// /// Gets the static type of the expression that this ///represents. /// The public override Type Type { get { if (_value == null) { return typeof(object); } return _value.GetType(); } } ///that represents the static type of the expression. /// Returns the node type of this Expression. Extension nodes should return /// ExpressionType.Extension when overriding this method. /// ///The public sealed override ExpressionType NodeType { get { return ExpressionType.Constant; } } ///of the expression. /// Gets the value of the constant expression. /// public object Value { get { return _value; } } ////// Dispatches to the specific visit method for this node type. /// protected internal override Expression Accept(ExpressionVisitor visitor) { return visitor.VisitConstant(this); } } internal class TypedConstantExpression : ConstantExpression { private readonly Type _type; internal TypedConstantExpression(object value, Type type) : base(value) { _type = type; } public sealed override Type Type { get { return _type; } } } public partial class Expression { ////// Creates a /// Anthat has the property set to the specified value. . /// to set the property equal to. /// /// A public static ConstantExpression Constant(object value) { return ConstantExpression.Make(value, value == null ? typeof(object) : value.GetType()); } ///that has the property equal to /// and the property set to the specified value. /// /// Creates a /// Anthat has the /// and properties set to the specified values. . /// to set the property equal to. /// A to set the property equal to. /// /// A public static ConstantExpression Constant(object value, Type type) { ContractUtils.RequiresNotNull(type, "type"); if (value == null && type.IsValueType && !TypeUtils.IsNullableType(type)) { throw Error.ArgumentTypesMustMatch(); } if (value != null && !type.IsAssignableFrom(value.GetType())) { throw Error.ArgumentTypesMustMatch(); } return ConstantExpression.Make(value, type); } } } // 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.Diagnostics; using System.Dynamic.Utils; #if SILVERLIGHT using System.Core; #endif namespace System.Linq.Expressions { ///that has the property equal to /// and the and /// properties set to the specified values. /// /// Represents an expression that has a constant value. /// #if !SILVERLIGHT [DebuggerTypeProxy(typeof(Expression.ConstantExpressionProxy))] #endif public class ConstantExpression : Expression { // Possible optimization: we could have a Constantsubclass that // stores the unboxed value. private readonly object _value; internal ConstantExpression(object value) { _value = value; } internal static ConstantExpression Make(object value, Type type) { if ((value == null && type == typeof(object)) || (value != null && value.GetType() == type)) { return new ConstantExpression(value); } else { return new TypedConstantExpression(value, type); } } /// /// Gets the static type of the expression that this ///represents. /// The public override Type Type { get { if (_value == null) { return typeof(object); } return _value.GetType(); } } ///that represents the static type of the expression. /// Returns the node type of this Expression. Extension nodes should return /// ExpressionType.Extension when overriding this method. /// ///The public sealed override ExpressionType NodeType { get { return ExpressionType.Constant; } } ///of the expression. /// Gets the value of the constant expression. /// public object Value { get { return _value; } } ////// Dispatches to the specific visit method for this node type. /// protected internal override Expression Accept(ExpressionVisitor visitor) { return visitor.VisitConstant(this); } } internal class TypedConstantExpression : ConstantExpression { private readonly Type _type; internal TypedConstantExpression(object value, Type type) : base(value) { _type = type; } public sealed override Type Type { get { return _type; } } } public partial class Expression { ////// Creates a /// Anthat has the property set to the specified value. . /// to set the property equal to. /// /// A public static ConstantExpression Constant(object value) { return ConstantExpression.Make(value, value == null ? typeof(object) : value.GetType()); } ///that has the property equal to /// and the property set to the specified value. /// /// Creates a /// Anthat has the /// and properties set to the specified values. . /// to set the property equal to. /// A to set the property equal to. /// /// A public static ConstantExpression Constant(object value, Type type) { ContractUtils.RequiresNotNull(type, "type"); if (value == null && type.IsValueType && !TypeUtils.IsNullableType(type)) { throw Error.ArgumentTypesMustMatch(); } if (value != null && !type.IsAssignableFrom(value.GetType())) { throw Error.ArgumentTypesMustMatch(); } return ConstantExpression.Make(value, type); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.that has the property equal to /// and the and /// properties set to the specified values. ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StreamWriter.cs
- EncryptedReference.cs
- DataGridViewRowCancelEventArgs.cs
- WorkflowInstanceUnhandledExceptionRecord.cs
- UserMapPath.cs
- DataSourceSelectArguments.cs
- CharEntityEncoderFallback.cs
- RotateTransform3D.cs
- TraceSwitch.cs
- SqlFacetAttribute.cs
- KeyEventArgs.cs
- SecurityStandardsManager.cs
- SchemaImporter.cs
- StrokeCollection2.cs
- FaultBookmark.cs
- SignatureToken.cs
- OrthographicCamera.cs
- BinaryHeap.cs
- ProviderCollection.cs
- VisualStyleTypesAndProperties.cs
- ClientBuildManagerTypeDescriptionProviderBridge.cs
- RoutedUICommand.cs
- RuntimeCompatibilityAttribute.cs
- StrokeNodeOperations.cs
- HttpListenerRequest.cs
- TextEditorTables.cs
- ListViewInsertionMark.cs
- ColumnResizeAdorner.cs
- WebEventTraceProvider.cs
- SchemaInfo.cs
- MergeFilterQuery.cs
- UnicodeEncoding.cs
- FastPropertyAccessor.cs
- EventPrivateKey.cs
- PackageRelationshipSelector.cs
- Dispatcher.cs
- ListViewEditEventArgs.cs
- OperandQuery.cs
- SimpleTypeResolver.cs
- ZipFileInfoCollection.cs
- ProxyFragment.cs
- DbProviderFactoriesConfigurationHandler.cs
- VScrollProperties.cs
- ConfigurationConverterBase.cs
- PolyQuadraticBezierSegment.cs
- WindowsAltTab.cs
- SingleKeyFrameCollection.cs
- Rotation3D.cs
- HiddenField.cs
- FixedSOMPageElement.cs
- Odbc32.cs
- AsyncResult.cs
- XmlExpressionDumper.cs
- HttpHandlersSection.cs
- BufferedGraphicsManager.cs
- ViewManager.cs
- Policy.cs
- CodeMethodInvokeExpression.cs
- UniqueIdentifierService.cs
- SessionState.cs
- DataViewManager.cs
- WindowsListViewItemStartMenu.cs
- FixedLineResult.cs
- GeneralTransform2DTo3DTo2D.cs
- CaseCqlBlock.cs
- SqlDataReader.cs
- CreateUserErrorEventArgs.cs
- NotFiniteNumberException.cs
- IntegerValidator.cs
- XmlCharCheckingReader.cs
- ViewDesigner.cs
- LogWriteRestartAreaAsyncResult.cs
- SecurityDescriptor.cs
- CachedPathData.cs
- QueryRewriter.cs
- EventMappingSettings.cs
- Vector3DAnimationUsingKeyFrames.cs
- ClientTargetSection.cs
- DesignTimeParseData.cs
- storepermissionattribute.cs
- ChildTable.cs
- HttpCapabilitiesEvaluator.cs
- MimeTypePropertyAttribute.cs
- C14NUtil.cs
- FileFormatException.cs
- HtmlListAdapter.cs
- FloatMinMaxAggregationOperator.cs
- ContextMenuService.cs
- InputProcessorProfiles.cs
- SettingsPropertyWrongTypeException.cs
- dataSvcMapFileLoader.cs
- Control.cs
- ZipIOCentralDirectoryFileHeader.cs
- PageThemeBuildProvider.cs
- LocationUpdates.cs
- grammarelement.cs
- ManagedIStream.cs
- safesecurityhelperavalon.cs
- GridLengthConverter.cs
- CommandID.cs