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
- TTSEngineTypes.cs
- PackageDocument.cs
- SoundPlayer.cs
- Message.cs
- CacheMode.cs
- EntityDataSourceViewSchema.cs
- PrintControllerWithStatusDialog.cs
- ProfileProvider.cs
- ReadOnlyDictionary.cs
- WsatServiceAddress.cs
- WindowsRichEditRange.cs
- AccessViolationException.cs
- GetChildSubtree.cs
- AccessText.cs
- SemanticResolver.cs
- UIHelper.cs
- LogicalTreeHelper.cs
- isolationinterop.cs
- XmlNamespaceManager.cs
- WorkerRequest.cs
- SettingsPropertyIsReadOnlyException.cs
- ScrollBar.cs
- TabletDeviceInfo.cs
- DataControlLinkButton.cs
- DesignerActionMethodItem.cs
- OletxCommittableTransaction.cs
- FormsAuthentication.cs
- DocumentPageHost.cs
- Journaling.cs
- UserUseLicenseDictionaryLoader.cs
- ListViewItem.cs
- TitleStyle.cs
- ParentControlDesigner.cs
- UnsafeNetInfoNativeMethods.cs
- CustomTrackingQuery.cs
- TcpSocketManager.cs
- VariableElement.cs
- XpsStructure.cs
- InheritedPropertyChangedEventArgs.cs
- DefaultObjectMappingItemCollection.cs
- safesecurityhelperavalon.cs
- LayoutTableCell.cs
- GiveFeedbackEvent.cs
- SigningDialog.cs
- ScriptControlManager.cs
- XmlObjectSerializerWriteContextComplex.cs
- XamlTypeMapper.cs
- DesignerProperties.cs
- GroupItem.cs
- SessionIDManager.cs
- RelationshipEndMember.cs
- ProgressBar.cs
- FileLoadException.cs
- Matrix.cs
- AuthenticationSchemesHelper.cs
- DataTableMappingCollection.cs
- ListViewGroupItemCollection.cs
- NativeMethodsCLR.cs
- FormView.cs
- TrackingLocationCollection.cs
- C14NUtil.cs
- XmlQualifiedNameTest.cs
- ProxyHwnd.cs
- ListView.cs
- CompressionTransform.cs
- InvalidOleVariantTypeException.cs
- ComponentSerializationService.cs
- BamlLocalizabilityResolver.cs
- HotSpotCollection.cs
- CorrelationManager.cs
- StandardCommands.cs
- ToolboxItem.cs
- LinearQuaternionKeyFrame.cs
- X509SecurityToken.cs
- SafeLocalMemHandle.cs
- Input.cs
- ActiveXMessageFormatter.cs
- ReceiveMessageAndVerifySecurityAsyncResultBase.cs
- XmlSchemaAnnotated.cs
- AvtEvent.cs
- DynamicResourceExtension.cs
- SqlUserDefinedAggregateAttribute.cs
- ProfilePropertySettingsCollection.cs
- RtfToXamlLexer.cs
- TextEditorThreadLocalStore.cs
- BindingNavigatorDesigner.cs
- XXXInfos.cs
- PieceDirectory.cs
- ConfigurationFileMap.cs
- HandledEventArgs.cs
- StorageTypeMapping.cs
- StylusPointPropertyInfo.cs
- IsolationInterop.cs
- EdgeProfileValidation.cs
- TypedLocationWrapper.cs
- CodeExpressionStatement.cs
- LassoSelectionBehavior.cs
- WebPartZoneCollection.cs
- XmlChoiceIdentifierAttribute.cs
- AuthStoreRoleProvider.cs