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
- TextTreeUndo.cs
- loginstatus.cs
- ConfigurationManagerInternal.cs
- SqlDataSourceCache.cs
- EntityKey.cs
- GenericUriParser.cs
- XsltInput.cs
- Point3DCollection.cs
- CqlIdentifiers.cs
- TransactionManager.cs
- GridViewEditEventArgs.cs
- GridViewRowEventArgs.cs
- Stack.cs
- UpdateRecord.cs
- HwndStylusInputProvider.cs
- ExtentCqlBlock.cs
- RecordManager.cs
- DoubleAnimationBase.cs
- BamlRecordWriter.cs
- CngKeyBlobFormat.cs
- LoginUtil.cs
- FontCollection.cs
- CallInfo.cs
- DefaultEventAttribute.cs
- CodeDirectiveCollection.cs
- DataGridViewCellStyle.cs
- XmlSchemaAnnotation.cs
- SoapExtension.cs
- HtmlShim.cs
- CompilationLock.cs
- MaterialGroup.cs
- InitiatorSessionSymmetricMessageSecurityProtocol.cs
- EditorZone.cs
- MachineKeySection.cs
- ConfigUtil.cs
- StreamGeometry.cs
- XmlBaseWriter.cs
- BamlVersionHeader.cs
- GenericTypeParameterBuilder.cs
- ToolStripDropDownMenu.cs
- WorkflowLayouts.cs
- TextEndOfLine.cs
- CustomAttributeBuilder.cs
- X509IssuerSerialKeyIdentifierClause.cs
- ThicknessKeyFrameCollection.cs
- ReadOnlyDataSourceView.cs
- CompilerWrapper.cs
- DesignOnlyAttribute.cs
- DbProviderSpecificTypePropertyAttribute.cs
- UIElementPropertyUndoUnit.cs
- ListViewUpdatedEventArgs.cs
- ProfileGroupSettings.cs
- Util.cs
- ObjectListCommand.cs
- PropertyValueChangedEvent.cs
- DatatypeImplementation.cs
- VirtualizingPanel.cs
- MemberCollection.cs
- AudioFormatConverter.cs
- ClientEventManager.cs
- Keywords.cs
- WindowInteractionStateTracker.cs
- RSAOAEPKeyExchangeDeformatter.cs
- ZipIOCentralDirectoryBlock.cs
- SEHException.cs
- ValueQuery.cs
- StaticContext.cs
- CodeCompiler.cs
- ClientConvert.cs
- DBNull.cs
- WorkflowTransactionOptions.cs
- PackageFilter.cs
- Permission.cs
- ExpandoObject.cs
- WsatAdminException.cs
- WinFormsComponentEditor.cs
- WebPartTracker.cs
- NamespaceDisplay.xaml.cs
- Formatter.cs
- SiteIdentityPermission.cs
- ClientData.cs
- IndexerReference.cs
- ComponentDispatcher.cs
- DataGridViewCellEventArgs.cs
- MDIClient.cs
- login.cs
- FixedFindEngine.cs
- RijndaelManagedTransform.cs
- PackagePart.cs
- StrokeNodeOperations.cs
- HandlerWithFactory.cs
- ReflectionHelper.cs
- HttpCachePolicy.cs
- BindingExpression.cs
- HtmlTitle.cs
- RoutingTable.cs
- Calendar.cs
- MarkupCompilePass1.cs
- ZipIOCentralDirectoryFileHeader.cs
- HyperLinkColumn.cs