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
- ellipse.cs
- SqlDependencyListener.cs
- HeaderedItemsControl.cs
- AspCompat.cs
- Frame.cs
- XmlDataSourceNodeDescriptor.cs
- NetworkInterface.cs
- _HTTPDateParse.cs
- HttpListenerElement.cs
- NativeMethods.cs
- ToolStripTextBox.cs
- PropertySourceInfo.cs
- SqlLiftIndependentRowExpressions.cs
- DataServiceClientException.cs
- InfoCardArgumentException.cs
- State.cs
- PolicyLevel.cs
- TextClipboardData.cs
- DataBindingHandlerAttribute.cs
- PathData.cs
- WebHostScriptMappingsInstallComponent.cs
- COM2Properties.cs
- EntitySqlQueryState.cs
- MimeWriter.cs
- Sql8ConformanceChecker.cs
- __Filters.cs
- AppDomainAttributes.cs
- BinHexDecoder.cs
- HybridDictionary.cs
- StylusButton.cs
- EndpointDiscoveryMetadataCD1.cs
- StylusPointPropertyInfo.cs
- NamespaceList.cs
- Confirm.cs
- TextEndOfSegment.cs
- BinaryFormatterWriter.cs
- XmlWriter.cs
- HttpServerVarsCollection.cs
- CheckPair.cs
- ComplexPropertyEntry.cs
- VisualBrush.cs
- FunctionImportMapping.cs
- SqlCommandSet.cs
- HeaderLabel.cs
- XMLUtil.cs
- UnsignedPublishLicense.cs
- XhtmlBasicTextViewAdapter.cs
- ToolboxItemSnapLineBehavior.cs
- BindingMemberInfo.cs
- DataBinder.cs
- DataDocumentXPathNavigator.cs
- ComponentCodeDomSerializer.cs
- DictionaryEntry.cs
- ImpersonationContext.cs
- ListBoxChrome.cs
- RenameRuleObjectDialog.cs
- DataSourceCacheDurationConverter.cs
- XmlUtilWriter.cs
- PrintingPermission.cs
- TcpChannelHelper.cs
- RangeBase.cs
- HelpProvider.cs
- LinqDataSourceView.cs
- EntityDataSourceChangedEventArgs.cs
- SqlXml.cs
- GeneralTransformCollection.cs
- VarRefManager.cs
- CompilationUnit.cs
- ToolStripContentPanelRenderEventArgs.cs
- glyphs.cs
- CodeCompiler.cs
- JournalEntry.cs
- TreeViewItemAutomationPeer.cs
- JsonReaderWriterFactory.cs
- Int16Storage.cs
- SafeFileMapViewHandle.cs
- CodeChecksumPragma.cs
- ManipulationInertiaStartingEventArgs.cs
- SiteOfOriginPart.cs
- BindableTemplateBuilder.cs
- XmlSchemaElement.cs
- RestClientProxyHandler.cs
- _LoggingObject.cs
- ToolBar.cs
- ActivationServices.cs
- SafeNativeMethods.cs
- MarshalDirectiveException.cs
- SyncMethodInvoker.cs
- JoinGraph.cs
- BitmapScalingModeValidation.cs
- Axis.cs
- PackageStore.cs
- WaveHeader.cs
- ResourceReader.cs
- WinInetCache.cs
- FixedHighlight.cs
- _HeaderInfoTable.cs
- ValueExpressions.cs
- TreeNodeStyleCollection.cs
- WebControlsSection.cs