Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / TypeFieldSchema.cs / 1 / TypeFieldSchema.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.Design { using System; using System.Collections; using System.ComponentModel; using System.Diagnostics; using System.Reflection; ////// Represents a field's schema based on a PropertyDescriptor object. /// This is used by the TypeSchema class to provide schema for arbitrary types. /// If the property has the DataObjectFieldAttribute then it is used to get /// additional information about the field. /// [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags = System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)] internal sealed class TypeFieldSchema : IDataSourceFieldSchema { private PropertyDescriptor _fieldDescriptor; private bool _retrievedMetaData; private bool _primaryKey; private bool _isIdentity; private bool _isNullable; private int _length = -1; public TypeFieldSchema(PropertyDescriptor fieldDescriptor) { if (fieldDescriptor == null) { throw new ArgumentNullException("fieldDescriptor"); } _fieldDescriptor = fieldDescriptor; } public Type DataType { get { // If the type is Nullablethen we just want the T Type type = _fieldDescriptor.PropertyType; if (type.IsGenericType && (type.GetGenericTypeDefinition() == typeof(Nullable<>))) { return type.GetGenericArguments()[0]; } return type; } } public bool Identity { get { EnsureMetaData(); return _isIdentity; } } public bool IsReadOnly { get { return _fieldDescriptor.IsReadOnly; } } public bool IsUnique { get { return false; } } public int Length { get { EnsureMetaData(); return _length; } } public string Name { get { return _fieldDescriptor.Name; } } public bool Nullable { get { // All reference types are nullable, and value types wrapped // in Nullable<> are nullable too. EnsureMetaData(); Type type = _fieldDescriptor.PropertyType; return (!type.IsValueType) || _isNullable || (type.IsGenericType && (type.GetGenericTypeDefinition() == typeof(Nullable<>))); } } public int Precision { get { return -1; } } public bool PrimaryKey { get { EnsureMetaData(); return _primaryKey; } } public int Scale { get { return -1; } } private void EnsureMetaData() { if (_retrievedMetaData) { return; } DataObjectFieldAttribute attr = (DataObjectFieldAttribute)_fieldDescriptor.Attributes[typeof(DataObjectFieldAttribute)]; if (attr != null) { _primaryKey = attr.PrimaryKey; _isIdentity = attr.IsIdentity; _isNullable = attr.IsNullable; _length = attr.Length; } _retrievedMetaData = true; } } } // 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
- _ConnectOverlappedAsyncResult.cs
- Win32SafeHandles.cs
- BasePropertyDescriptor.cs
- TypeUnloadedException.cs
- SpellerStatusTable.cs
- HTMLTagNameToTypeMapper.cs
- RawAppCommandInputReport.cs
- DataBoundControlAdapter.cs
- ReachPageContentCollectionSerializer.cs
- MetadataFile.cs
- TextTreeRootNode.cs
- CompositeCollectionView.cs
- ConfigurationManagerInternalFactory.cs
- MonitoringDescriptionAttribute.cs
- AutomationTextAttribute.cs
- GridToolTip.cs
- KeyPullup.cs
- MetadataAssemblyHelper.cs
- CompilerCollection.cs
- Timer.cs
- ThemeDictionaryExtension.cs
- _SslSessionsCache.cs
- Odbc32.cs
- InvalidDataContractException.cs
- GenericTextProperties.cs
- SR.Designer.cs
- GacUtil.cs
- TextRangeEditTables.cs
- TypeForwardedToAttribute.cs
- SmtpFailedRecipientsException.cs
- SingleQueryOperator.cs
- WebConfigManager.cs
- RegexFCD.cs
- TextFindEngine.cs
- Constants.cs
- EntityTransaction.cs
- BuildProvider.cs
- ISFClipboardData.cs
- _BasicClient.cs
- CollectionViewGroupRoot.cs
- HttpConfigurationSystem.cs
- HttpConfigurationSystem.cs
- SatelliteContractVersionAttribute.cs
- PropertyDescriptorGridEntry.cs
- XmlArrayItemAttribute.cs
- PanelStyle.cs
- PathSegmentCollection.cs
- grammarelement.cs
- XmlSchemaAny.cs
- GlobalizationAssembly.cs
- SecureStringHasher.cs
- SamlDelegatingWriter.cs
- WindowProviderWrapper.cs
- ParserOptions.cs
- TransportManager.cs
- VisualStyleInformation.cs
- SoundPlayer.cs
- X509CertificateStore.cs
- HashHelper.cs
- DoubleLink.cs
- EntityViewContainer.cs
- ExitEventArgs.cs
- Types.cs
- BitmapMetadata.cs
- StretchValidation.cs
- OdbcError.cs
- InheritanceContextHelper.cs
- WebAdminConfigurationHelper.cs
- DbMetaDataColumnNames.cs
- AffineTransform3D.cs
- UiaCoreProviderApi.cs
- ExtensionQuery.cs
- BitConverter.cs
- TypeDescriptorContext.cs
- SplineQuaternionKeyFrame.cs
- XmlAttributeOverrides.cs
- SoapEnumAttribute.cs
- SqlBuffer.cs
- TreeViewImageIndexConverter.cs
- EdmComplexPropertyAttribute.cs
- DesignTimeXamlWriter.cs
- OperationCanceledException.cs
- WindowsToolbarAsMenu.cs
- RadioButton.cs
- RuntimeConfigLKG.cs
- LogPolicy.cs
- OleDbPermission.cs
- DbExpressionVisitor_TResultType.cs
- HitTestResult.cs
- FirstQueryOperator.cs
- WorkflowServiceHostFactory.cs
- XmlSchemaImporter.cs
- Page.cs
- DockPattern.cs
- Pen.cs
- SelectedGridItemChangedEvent.cs
- ToolstripProfessionalRenderer.cs
- ControlSerializer.cs
- GridViewCancelEditEventArgs.cs
- Task.cs