Code:
/ DotNET / DotNET / 8.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
- SplitterCancelEvent.cs
- ping.cs
- TransformerTypeCollection.cs
- SubordinateTransaction.cs
- XmlParserContext.cs
- PropertyRecord.cs
- MsmqTransportSecurityElement.cs
- ScrollableControl.cs
- Unit.cs
- CommentEmitter.cs
- TokenBasedSet.cs
- SqlFunctions.cs
- Size3DConverter.cs
- ExecutionContext.cs
- SchemaImporterExtension.cs
- MembershipPasswordException.cs
- XmlAttributeCollection.cs
- DataGridViewComboBoxColumnDesigner.cs
- XmlNode.cs
- File.cs
- webeventbuffer.cs
- WebScriptMetadataMessage.cs
- SqlProviderManifest.cs
- ListChangedEventArgs.cs
- ISessionStateStore.cs
- SkinBuilder.cs
- TrailingSpaceComparer.cs
- DataColumnPropertyDescriptor.cs
- ListBoxAutomationPeer.cs
- TextViewBase.cs
- MembershipSection.cs
- DataRelation.cs
- SimpleMailWebEventProvider.cs
- XmlSerializableReader.cs
- DataControlField.cs
- WebContext.cs
- ProjectionQueryOptionExpression.cs
- RegexCaptureCollection.cs
- SamlAuthorizationDecisionStatement.cs
- __Error.cs
- TypedAsyncResult.cs
- CalendarDateChangedEventArgs.cs
- LassoHelper.cs
- PrtCap_Builder.cs
- CompilerGlobalScopeAttribute.cs
- Page.cs
- ValidationHelper.cs
- ListDictionary.cs
- ConversionValidationRule.cs
- ImportContext.cs
- RuntimeDelegateArgument.cs
- SubclassTypeValidatorAttribute.cs
- activationcontext.cs
- WindowPattern.cs
- SmuggledIUnknown.cs
- HotCommands.cs
- NCryptSafeHandles.cs
- x509utils.cs
- SafeWaitHandle.cs
- RecordBuilder.cs
- SessionStateContainer.cs
- Triangle.cs
- ButtonBaseDesigner.cs
- FileSecurity.cs
- NativeMethods.cs
- CompiledRegexRunner.cs
- AnonymousIdentificationModule.cs
- QilCloneVisitor.cs
- CompilerHelpers.cs
- ReadWriteSpinLock.cs
- _SslStream.cs
- StrokeNodeOperations2.cs
- ObjRef.cs
- SHA256Managed.cs
- XmlnsDefinitionAttribute.cs
- GenerateScriptTypeAttribute.cs
- ExtensionFile.cs
- Misc.cs
- OracleRowUpdatingEventArgs.cs
- UnmanagedBitmapWrapper.cs
- XmlNullResolver.cs
- ExpressionHelper.cs
- RSAOAEPKeyExchangeDeformatter.cs
- MailWebEventProvider.cs
- SmiContextFactory.cs
- IImplicitResourceProvider.cs
- BitConverter.cs
- TrustLevel.cs
- ModelItemCollection.cs
- X509CertificateTrustedIssuerElement.cs
- TileBrush.cs
- HandoffBehavior.cs
- DBCommandBuilder.cs
- COAUTHINFO.cs
- XmlSchemaCollection.cs
- DocumentSchemaValidator.cs
- CodeMemberProperty.cs
- ReliabilityContractAttribute.cs
- DataGridTextBox.cs
- SmiTypedGetterSetter.cs