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
- ToolstripProfessionalRenderer.cs
- TemplateBindingExtensionConverter.cs
- CompilerGlobalScopeAttribute.cs
- ArrangedElement.cs
- BuildDependencySet.cs
- CodePageUtils.cs
- MatrixValueSerializer.cs
- MulticastNotSupportedException.cs
- RemoteX509AsymmetricSecurityKey.cs
- MetadataProperty.cs
- ComplexObject.cs
- ProgressChangedEventArgs.cs
- OpenTypeCommon.cs
- TextRangeProviderWrapper.cs
- ZipFileInfoCollection.cs
- HtmlInputControl.cs
- TitleStyle.cs
- NonSerializedAttribute.cs
- ReadWriteObjectLock.cs
- oledbconnectionstring.cs
- QueryPageSettingsEventArgs.cs
- UpdateManifestForBrowserApplication.cs
- MailDefinition.cs
- TypeNameConverter.cs
- SchemaElementDecl.cs
- WindowsEditBox.cs
- ConfigXmlComment.cs
- WsdlImporterElement.cs
- DnsEndPoint.cs
- OpacityConverter.cs
- Request.cs
- CustomCategoryAttribute.cs
- StatusBarPanel.cs
- DBDataPermission.cs
- SharedStatics.cs
- UpdateEventArgs.cs
- PictureBox.cs
- StyleBamlTreeBuilder.cs
- StandardTransformFactory.cs
- Base64Decoder.cs
- XmlSchemaImport.cs
- KeyNotFoundException.cs
- MatrixTransform3D.cs
- TextSchema.cs
- XmlSchemaInclude.cs
- WebServiceEnumData.cs
- GenericUI.cs
- SQLGuid.cs
- AutoGeneratedFieldProperties.cs
- RuleInfoComparer.cs
- DESCryptoServiceProvider.cs
- Journaling.cs
- WebBrowser.cs
- SqlParameter.cs
- ConfigurationValidatorAttribute.cs
- WebEvents.cs
- LogReserveAndAppendState.cs
- Form.cs
- ErrorEventArgs.cs
- RegexCode.cs
- ColorMatrix.cs
- cache.cs
- KeyPullup.cs
- ReceiveContextCollection.cs
- TdsParserSessionPool.cs
- FormViewInsertEventArgs.cs
- Literal.cs
- HttpRawResponse.cs
- SafeEventLogWriteHandle.cs
- SafeBitVector32.cs
- ISFTagAndGuidCache.cs
- TerminateDesigner.cs
- ActivationArguments.cs
- DocumentSchemaValidator.cs
- ProxyGenerationError.cs
- path.cs
- StyleCollectionEditor.cs
- DiffuseMaterial.cs
- FileDialogCustomPlace.cs
- DataSourceCache.cs
- PageHandlerFactory.cs
- PersonalizableAttribute.cs
- PersistenceTypeAttribute.cs
- Utils.cs
- DPAPIProtectedConfigurationProvider.cs
- LZCodec.cs
- MetadataItem_Static.cs
- TextElementEnumerator.cs
- XmlElement.cs
- DesignerRegion.cs
- NullEntityWrapper.cs
- DbConnectionPool.cs
- columnmapkeybuilder.cs
- LicFileLicenseProvider.cs
- SiteMapHierarchicalDataSourceView.cs
- TabletCollection.cs
- FormatConvertedBitmap.cs
- BoolExpression.cs
- OdbcFactory.cs
- HtmlInputControl.cs