Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Linq / TypeHelper.cs / 1305376 / TypeHelper.cs
using System; using System.Collections.Generic; using System.Text; namespace System.Linq { internal static class TypeHelper { internal static bool IsEnumerableType(Type enumerableType) { return FindGenericType(typeof(IEnumerable<>), enumerableType) != null; } internal static bool IsKindOfGeneric(Type type, Type definition) { return FindGenericType(definition, type) != null; } internal static Type GetElementType(Type enumerableType) { Type ienumType = FindGenericType(typeof(IEnumerable<>), enumerableType); if (ienumType != null) return ienumType.GetGenericArguments()[0]; return enumerableType; } internal static Type FindGenericType(Type definition, Type type) { while (type != null && type != typeof(object)) { if (type.IsGenericType && type.GetGenericTypeDefinition() == definition) return type; if (definition.IsInterface) { foreach(Type itype in type.GetInterfaces()) { Type found = FindGenericType(definition, itype); if (found != null) return found; } } type = type.BaseType; } return null; } internal static bool IsNullableType(Type type) { return type != null && type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>); } internal static Type GetNonNullableType(Type type) { if (IsNullableType(type)) { return type.GetGenericArguments()[0]; } return type; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections.Generic; using System.Text; namespace System.Linq { internal static class TypeHelper { internal static bool IsEnumerableType(Type enumerableType) { return FindGenericType(typeof(IEnumerable<>), enumerableType) != null; } internal static bool IsKindOfGeneric(Type type, Type definition) { return FindGenericType(definition, type) != null; } internal static Type GetElementType(Type enumerableType) { Type ienumType = FindGenericType(typeof(IEnumerable<>), enumerableType); if (ienumType != null) return ienumType.GetGenericArguments()[0]; return enumerableType; } internal static Type FindGenericType(Type definition, Type type) { while (type != null && type != typeof(object)) { if (type.IsGenericType && type.GetGenericTypeDefinition() == definition) return type; if (definition.IsInterface) { foreach(Type itype in type.GetInterfaces()) { Type found = FindGenericType(definition, itype); if (found != null) return found; } } type = type.BaseType; } return null; } internal static bool IsNullableType(Type type) { return type != null && type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>); } internal static Type GetNonNullableType(Type type) { if (IsNullableType(type)) { return type.GetGenericArguments()[0]; } return type; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataException.cs
- DataTemplateKey.cs
- Lasso.cs
- PartialCachingControl.cs
- WebPartHelpVerb.cs
- ConsoleCancelEventArgs.cs
- Point3DValueSerializer.cs
- ListViewInsertEventArgs.cs
- SecurityProtocolFactory.cs
- BitmapEffectInputData.cs
- SqlXml.cs
- XmlBindingWorker.cs
- StrokeIntersection.cs
- XmlQueryTypeFactory.cs
- ServiceActivationException.cs
- TrimSurroundingWhitespaceAttribute.cs
- BitmapData.cs
- HtmlShimManager.cs
- MouseGesture.cs
- Visual3D.cs
- OleDbParameter.cs
- ChildrenQuery.cs
- DocumentDesigner.cs
- AdjustableArrowCap.cs
- RegexGroup.cs
- StrongNameIdentityPermission.cs
- XmlMapping.cs
- Debug.cs
- CompiledELinqQueryState.cs
- HttpVersion.cs
- DelegateInArgument.cs
- RecordManager.cs
- NTAccount.cs
- SystemIPGlobalStatistics.cs
- MimeMapping.cs
- SelectionProcessor.cs
- AnimationClockResource.cs
- TdsEnums.cs
- PathSegment.cs
- MobileControlsSectionHelper.cs
- RequestResizeEvent.cs
- AuthenticationServiceManager.cs
- NGCUIElementCollectionSerializerAsync.cs
- JsonSerializer.cs
- SqlServices.cs
- QilReplaceVisitor.cs
- XmlMtomWriter.cs
- TableCell.cs
- NativeMethods.cs
- followingsibling.cs
- AttachInfo.cs
- SmtpNegotiateAuthenticationModule.cs
- KoreanLunisolarCalendar.cs
- FlowLayoutPanel.cs
- TitleStyle.cs
- ScriptServiceAttribute.cs
- PropertyInformation.cs
- SelectionRange.cs
- GifBitmapDecoder.cs
- CodeAccessSecurityEngine.cs
- ServicesUtilities.cs
- DataPointer.cs
- TransformPattern.cs
- DivideByZeroException.cs
- CompilationSection.cs
- EventMappingSettingsCollection.cs
- TimeoutValidationAttribute.cs
- FileLoadException.cs
- SerialPinChanges.cs
- WebBrowserEvent.cs
- QueuePathDialog.cs
- BuildProviderCollection.cs
- ImageCodecInfo.cs
- FrameAutomationPeer.cs
- Int16KeyFrameCollection.cs
- HMACSHA1.cs
- Variant.cs
- XPathEmptyIterator.cs
- RegistrySecurity.cs
- GlobalizationSection.cs
- TrackingProfile.cs
- Keywords.cs
- ComplexTypeEmitter.cs
- OleDbPropertySetGuid.cs
- TextFormatterImp.cs
- FixedSOMPageElement.cs
- ListenerSessionConnection.cs
- SerialReceived.cs
- WebBrowserDocumentCompletedEventHandler.cs
- ImageListStreamer.cs
- SqlConnectionStringBuilder.cs
- XmlJsonReader.cs
- RectAnimationUsingKeyFrames.cs
- DataObject.cs
- GlyphCollection.cs
- UnitControl.cs
- RepeatEnumerable.cs
- EventRecord.cs
- OdbcEnvironmentHandle.cs
- BadImageFormatException.cs