Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / AddIn / AddIn / System / Addin / MiniReflection / MiniParameterInfo.cs / 1305376 / MiniParameterInfo.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: MiniParameterInfo ** ** Purpose: Represents a method parameter. ** ===========================================================*/ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Text; using System.AddIn.MiniReflection.MetadataReader; using System.Diagnostics.Contracts; namespace System.AddIn.MiniReflection { [Serializable] internal sealed class MiniParameterInfo { private CorElementType _elementType; private TypeInfo _paramType; public MiniParameterInfo(CorElementType elementType) { System.Diagnostics.Contracts.Contract.Requires(elementType <= CorElementType.String || elementType == CorElementType.I || elementType == CorElementType.U || elementType == CorElementType.Object); _elementType = elementType; } public MiniParameterInfo(CorElementType elementType, TypeInfo parameterType) { System.Diagnostics.Contracts.Contract.Requires(parameterType != null); System.Diagnostics.Contracts.Contract.Requires(IsValid(elementType)); _elementType = elementType; _paramType = parameterType; } // To avoid reflection with Enum.IsDefined [Pure] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification="Needed for Contracts conditional compilation")] public static bool IsValid(CorElementType elementType) { return (CorElementType.End <= elementType && elementType <= CorElementType.Max) || elementType == CorElementType.Modifier || elementType == CorElementType.Sentinel || elementType == CorElementType.Pinned; } /* // This lets Reflection Type instances sneak into our MiniParameterInfo's. internal MiniParameterInfo(TypeInfo parameterType) { Contract.Requires(parameterType != null); // This isn't technically correct, but we don't need it to be // perfectly accurate because the CorElementType never leaks // out of this class. _elementType = CorElementType.Class; _paramType = parameterType; } */ public TypeInfo ParameterType { get { if (_elementType == CorElementType.Class || _elementType == CorElementType.ValueType) return _paramType; switch (_elementType) { case CorElementType.Boolean: return new TypeInfo(typeof(Boolean)); case CorElementType.I1: return new TypeInfo(typeof(SByte)); case CorElementType.U1: return new TypeInfo(typeof(Byte)); case CorElementType.I2: return new TypeInfo(typeof(Int16)); case CorElementType.U2: return new TypeInfo(typeof(UInt16)); case CorElementType.Char: return new TypeInfo(typeof(Char)); case CorElementType.I4: return new TypeInfo(typeof(Int32)); case CorElementType.U4: return new TypeInfo(typeof(UInt32)); case CorElementType.I8: return new TypeInfo(typeof(Int64)); case CorElementType.U8: return new TypeInfo(typeof(UInt64)); case CorElementType.R4: return new TypeInfo(typeof(Single)); case CorElementType.R8: return new TypeInfo(typeof(Double)); case CorElementType.I: return new TypeInfo(typeof(IntPtr)); case CorElementType.U: return new TypeInfo(typeof(UIntPtr)); case CorElementType.String: return new TypeInfo(typeof(String)); case CorElementType.Object: return new TypeInfo(typeof(Object)); default: System.Diagnostics.Contracts.Contract.Assert(false, "Unrecognized CorElementType."); throw new NotImplementedException(); } } } public override string ToString() { if (_elementType == CorElementType.Class || _elementType == CorElementType.ValueType) return _paramType.ToString(); else return _elementType.ToString(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: MiniParameterInfo ** ** Purpose: Represents a method parameter. ** ===========================================================*/ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Text; using System.AddIn.MiniReflection.MetadataReader; using System.Diagnostics.Contracts; namespace System.AddIn.MiniReflection { [Serializable] internal sealed class MiniParameterInfo { private CorElementType _elementType; private TypeInfo _paramType; public MiniParameterInfo(CorElementType elementType) { System.Diagnostics.Contracts.Contract.Requires(elementType <= CorElementType.String || elementType == CorElementType.I || elementType == CorElementType.U || elementType == CorElementType.Object); _elementType = elementType; } public MiniParameterInfo(CorElementType elementType, TypeInfo parameterType) { System.Diagnostics.Contracts.Contract.Requires(parameterType != null); System.Diagnostics.Contracts.Contract.Requires(IsValid(elementType)); _elementType = elementType; _paramType = parameterType; } // To avoid reflection with Enum.IsDefined [Pure] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification="Needed for Contracts conditional compilation")] public static bool IsValid(CorElementType elementType) { return (CorElementType.End <= elementType && elementType <= CorElementType.Max) || elementType == CorElementType.Modifier || elementType == CorElementType.Sentinel || elementType == CorElementType.Pinned; } /* // This lets Reflection Type instances sneak into our MiniParameterInfo's. internal MiniParameterInfo(TypeInfo parameterType) { Contract.Requires(parameterType != null); // This isn't technically correct, but we don't need it to be // perfectly accurate because the CorElementType never leaks // out of this class. _elementType = CorElementType.Class; _paramType = parameterType; } */ public TypeInfo ParameterType { get { if (_elementType == CorElementType.Class || _elementType == CorElementType.ValueType) return _paramType; switch (_elementType) { case CorElementType.Boolean: return new TypeInfo(typeof(Boolean)); case CorElementType.I1: return new TypeInfo(typeof(SByte)); case CorElementType.U1: return new TypeInfo(typeof(Byte)); case CorElementType.I2: return new TypeInfo(typeof(Int16)); case CorElementType.U2: return new TypeInfo(typeof(UInt16)); case CorElementType.Char: return new TypeInfo(typeof(Char)); case CorElementType.I4: return new TypeInfo(typeof(Int32)); case CorElementType.U4: return new TypeInfo(typeof(UInt32)); case CorElementType.I8: return new TypeInfo(typeof(Int64)); case CorElementType.U8: return new TypeInfo(typeof(UInt64)); case CorElementType.R4: return new TypeInfo(typeof(Single)); case CorElementType.R8: return new TypeInfo(typeof(Double)); case CorElementType.I: return new TypeInfo(typeof(IntPtr)); case CorElementType.U: return new TypeInfo(typeof(UIntPtr)); case CorElementType.String: return new TypeInfo(typeof(String)); case CorElementType.Object: return new TypeInfo(typeof(Object)); default: System.Diagnostics.Contracts.Contract.Assert(false, "Unrecognized CorElementType."); throw new NotImplementedException(); } } } public override string ToString() { if (_elementType == CorElementType.Class || _elementType == CorElementType.ValueType) return _paramType.ToString(); else return _elementType.ToString(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SynchronizedReadOnlyCollection.cs
- TypePresenter.xaml.cs
- DBBindings.cs
- ScopedKnownTypes.cs
- DisableDpiAwarenessAttribute.cs
- UrlPath.cs
- NetworkAddressChange.cs
- FormsAuthenticationEventArgs.cs
- StorageBasedPackageProperties.cs
- FieldAccessException.cs
- BehaviorEditorPart.cs
- PartitionResolver.cs
- AssociatedControlConverter.cs
- LinqDataSourceStatusEventArgs.cs
- AttachedAnnotation.cs
- DbExpressionBuilder.cs
- AdornedElementPlaceholder.cs
- InvalidPropValue.cs
- WebPartChrome.cs
- LoginName.cs
- HealthMonitoringSection.cs
- TemplateColumn.cs
- HttpAsyncResult.cs
- TransformGroup.cs
- StandardRuntimeEnumValidator.cs
- DiscoveryUtility.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- IFlowDocumentViewer.cs
- TagPrefixInfo.cs
- MemberAccessException.cs
- AnchoredBlock.cs
- DataGridViewDesigner.cs
- Expander.cs
- autovalidator.cs
- DecoderReplacementFallback.cs
- DefaultValidator.cs
- Vector3DConverter.cs
- SingleAnimation.cs
- TypedTableBase.cs
- Converter.cs
- TextBox.cs
- BasicHttpBindingCollectionElement.cs
- ListViewItem.cs
- TextEditorCopyPaste.cs
- TraceLevelStore.cs
- PartialTrustVisibleAssemblyCollection.cs
- ScriptBehaviorDescriptor.cs
- Part.cs
- BamlBinaryReader.cs
- ListViewInsertedEventArgs.cs
- ContextMenuAutomationPeer.cs
- ActivityExecutionFilter.cs
- ClientConfigurationSystem.cs
- XhtmlBasicSelectionListAdapter.cs
- SelectorItemAutomationPeer.cs
- BinaryNode.cs
- datacache.cs
- DragEvent.cs
- RequestQueue.cs
- ToolStripScrollButton.cs
- MimeTypeAttribute.cs
- Quaternion.cs
- DbQueryCommandTree.cs
- SourceElementsCollection.cs
- ExternalException.cs
- SQLBinaryStorage.cs
- ComponentCommands.cs
- ImageAutomationPeer.cs
- VSWCFServiceContractGenerator.cs
- MinimizableAttributeTypeConverter.cs
- PageContent.cs
- SiblingIterators.cs
- ProxyWebPart.cs
- SessionIDManager.cs
- HttpAsyncResult.cs
- EventLogPermissionAttribute.cs
- XmlSchemaSimpleContentRestriction.cs
- SendMailErrorEventArgs.cs
- Lasso.cs
- RemotingException.cs
- Site.cs
- AbstractExpressions.cs
- AutomationEvent.cs
- ServiceNotStartedException.cs
- HostTimeoutsElement.cs
- RestClientProxyHandler.cs
- SmiMetaData.cs
- TypeElement.cs
- Operator.cs
- PropertyFilterAttribute.cs
- ProviderConnectionPoint.cs
- SID.cs
- XDeferredAxisSource.cs
- ToolStripContainerDesigner.cs
- JsonFormatWriterGenerator.cs
- XamlPathDataSerializer.cs
- UpdateTracker.cs
- ApplicationSettingsBase.cs
- namescope.cs
- ForwardPositionQuery.cs