Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / TypeEnumerableViewSchema.cs / 1 / TypeEnumerableViewSchema.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.Design { using System; using System.Collections; using System.Diagnostics; using System.Globalization; using System.Reflection; ////// Represents a View's schema based on a strongly typed enumerable. The /// strongly-typed row type is determined based on the indexer property /// of the enumerable. /// [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)] internal sealed class TypeEnumerableViewSchema : BaseTypeViewSchema { public TypeEnumerableViewSchema(string viewName, Type type) : base(viewName, type) { Debug.Assert(typeof(IEnumerable).IsAssignableFrom(type), String.Format(CultureInfo.InvariantCulture, "The type '{0}' does not implement System.Collections.IEnumerable.", type.FullName)); } protected override Type GetRowType(Type objectType) { // For arrays we just get the element type if (objectType.IsArray) { Debug.Assert(objectType.HasElementType, "Expected array type to have an ElementType"); Debug.Assert(objectType.GetElementType() != null, "Did not expect array type to have null ElementType"); return objectType.GetElementType(); } // Search for indexer property PropertyInfo[] properties = objectType.GetProperties(BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo pi in properties) { ParameterInfo[] indexParams = pi.GetIndexParameters(); if (indexParams.Length > 0) { // We assume that this was the only indexer, so we can immediately stop looking for more // return pi.PropertyType; } } return null; } } } // 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
- MessageBox.cs
- VerticalConnector.xaml.cs
- StylusPoint.cs
- InvalidStoreProtectionKeyException.cs
- MetadataUtil.cs
- _AuthenticationState.cs
- FrameworkContextData.cs
- DataKeyArray.cs
- TextPenaltyModule.cs
- XmlHelper.cs
- AxisAngleRotation3D.cs
- ProfileSection.cs
- AutomationIdentifier.cs
- BuildProvider.cs
- DataFormats.cs
- EnumBuilder.cs
- ViewBox.cs
- DirectoryInfo.cs
- DataFormats.cs
- Constants.cs
- StringExpressionSet.cs
- ColumnResizeUndoUnit.cs
- TreeViewItem.cs
- XmlCustomFormatter.cs
- userdatakeys.cs
- FontDifferentiator.cs
- HttpHandlersInstallComponent.cs
- BitHelper.cs
- handlecollector.cs
- ContextStack.cs
- ZoomPercentageConverter.cs
- TextFormatterContext.cs
- HostProtectionPermission.cs
- EdmProperty.cs
- HtmlInputReset.cs
- MessageSmuggler.cs
- MobileCategoryAttribute.cs
- AsyncOperationContext.cs
- XmlCDATASection.cs
- Math.cs
- Errors.cs
- TextPattern.cs
- Optimizer.cs
- WbemException.cs
- nulltextnavigator.cs
- PrincipalPermission.cs
- BindingElementExtensionElement.cs
- CodeBinaryOperatorExpression.cs
- Oid.cs
- DeleteWorkflowOwnerCommand.cs
- XamlTypeMapper.cs
- HebrewCalendar.cs
- WebServiceParameterData.cs
- Root.cs
- OdbcEnvironmentHandle.cs
- XmlQueryStaticData.cs
- DocumentGridContextMenu.cs
- panel.cs
- OracleFactory.cs
- GacUtil.cs
- WindowsRichEditRange.cs
- _ConnectOverlappedAsyncResult.cs
- FieldNameLookup.cs
- SerializationStore.cs
- XmlText.cs
- IdentityHolder.cs
- StreamAsIStream.cs
- MimeTypePropertyAttribute.cs
- RemotingServices.cs
- MSHTMLHostUtil.cs
- cache.cs
- XmlSchemaComplexContentRestriction.cs
- ImageConverter.cs
- QuaternionRotation3D.cs
- XmlILOptimizerVisitor.cs
- XamlPoint3DCollectionSerializer.cs
- Decoder.cs
- RenderingEventArgs.cs
- QueryContinueDragEventArgs.cs
- BamlRecordReader.cs
- StoragePropertyMapping.cs
- TypeDescriptorFilterService.cs
- GlyphRun.cs
- ButtonColumn.cs
- GPRECTF.cs
- IncrementalReadDecoders.cs
- PrivilegedConfigurationManager.cs
- DoubleCollectionConverter.cs
- SerializationInfo.cs
- NominalTypeEliminator.cs
- CodeAttributeArgumentCollection.cs
- UICuesEvent.cs
- CodeSnippetTypeMember.cs
- InstallerTypeAttribute.cs
- VirtualizingPanel.cs
- AccessKeyManager.cs
- Interlocked.cs
- HeaderedItemsControl.cs
- DataServiceKeyAttribute.cs
- Roles.cs