Code:
/ FX-1434 / FX-1434 / 1.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
- GlyphTypeface.cs
- DoubleLinkList.cs
- DataKeyArray.cs
- ButtonBase.cs
- WsatConfiguration.cs
- GridEntry.cs
- DataExpression.cs
- XmlCDATASection.cs
- Keyboard.cs
- CapabilitiesSection.cs
- UserNamePasswordClientCredential.cs
- Event.cs
- ToolStripButton.cs
- Gdiplus.cs
- ScalarType.cs
- CodeSnippetStatement.cs
- _FtpControlStream.cs
- EntityDesignerDataSourceView.cs
- CheckBoxStandardAdapter.cs
- Cursor.cs
- ApplicationContext.cs
- StringStorage.cs
- CultureInfoConverter.cs
- TemplateControlParser.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- ToolTip.cs
- BrowserCapabilitiesFactory.cs
- DataGridViewLinkCell.cs
- EventRouteFactory.cs
- StateMachineWorkflowInstance.cs
- RightsManagementEncryptedStream.cs
- ComponentEvent.cs
- StaticSiteMapProvider.cs
- ListChangedEventArgs.cs
- SingleTagSectionHandler.cs
- Registry.cs
- DefaultSerializationProviderAttribute.cs
- XmlUtf8RawTextWriter.cs
- StrongNameKeyPair.cs
- FlowPosition.cs
- DateTimeFormatInfo.cs
- DataGridViewImageCell.cs
- __Error.cs
- SubtreeProcessor.cs
- TaskFileService.cs
- RolePrincipal.cs
- DataGridView.cs
- ButtonFieldBase.cs
- LinqDataSourceStatusEventArgs.cs
- CodeTypeParameter.cs
- DrawingImage.cs
- GestureRecognizer.cs
- TemplateEditingVerb.cs
- FixedPosition.cs
- ContentPathSegment.cs
- ToolStripGripRenderEventArgs.cs
- DirectoryInfo.cs
- NamespaceListProperty.cs
- ValidationHelper.cs
- DataGridViewCellValidatingEventArgs.cs
- CalendarDataBindingHandler.cs
- HTMLTextWriter.cs
- XDRSchema.cs
- IUnknownConstantAttribute.cs
- FunctionUpdateCommand.cs
- SafeBitVector32.cs
- AbstractDataSvcMapFileLoader.cs
- Matrix3DStack.cs
- StringAnimationBase.cs
- DetailsViewUpdatedEventArgs.cs
- BindToObject.cs
- ResourcePermissionBase.cs
- StrokeNodeEnumerator.cs
- ResXResourceWriter.cs
- RequestStatusBarUpdateEventArgs.cs
- VisualCollection.cs
- CompiledRegexRunnerFactory.cs
- TagPrefixCollection.cs
- ConvertEvent.cs
- AspNetSynchronizationContext.cs
- AuthenticationModulesSection.cs
- ToolStripOverflow.cs
- ServiceHttpModule.cs
- EntityProxyFactory.cs
- EUCJPEncoding.cs
- LinearGradientBrush.cs
- WebConfigurationFileMap.cs
- UserControlBuildProvider.cs
- BaseParser.cs
- SelectionProviderWrapper.cs
- UriScheme.cs
- XmlSerializer.cs
- ControlParameter.cs
- DesignerSerializationOptionsAttribute.cs
- DataViewSetting.cs
- Int64KeyFrameCollection.cs
- diagnosticsswitches.cs
- BuilderPropertyEntry.cs
- WindowsAuthenticationEventArgs.cs
- FixedBufferAttribute.cs