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
- ProcessRequestArgs.cs
- DbProviderFactoriesConfigurationHandler.cs
- SpecialNameAttribute.cs
- AppModelKnownContentFactory.cs
- VolatileEnlistmentState.cs
- DataGridRelationshipRow.cs
- FlowLayout.cs
- DoubleStorage.cs
- Binding.cs
- RadioButtonAutomationPeer.cs
- HttpRuntime.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- XmlNavigatorFilter.cs
- LiteralSubsegment.cs
- XmlSignatureProperties.cs
- ConfigurationErrorsException.cs
- BlockUIContainer.cs
- LinqExpressionNormalizer.cs
- OperatingSystemVersionCheck.cs
- IFlowDocumentViewer.cs
- GetPageNumberCompletedEventArgs.cs
- ViewManager.cs
- XmlLinkedNode.cs
- ListMarkerLine.cs
- SmtpTransport.cs
- QilStrConcatenator.cs
- ArrayTypeMismatchException.cs
- CryptoApi.cs
- FixedSOMTableCell.cs
- ListCollectionView.cs
- MessageBodyMemberAttribute.cs
- DataRelationPropertyDescriptor.cs
- XmlArrayAttribute.cs
- CompiledAction.cs
- ValueUnavailableException.cs
- DropShadowBitmapEffect.cs
- HttpWebRequestElement.cs
- AtomServiceDocumentSerializer.cs
- DesignerTextWriter.cs
- BaseValidator.cs
- SplayTreeNode.cs
- RestHandler.cs
- AuthenticationServiceManager.cs
- DPTypeDescriptorContext.cs
- SmiEventSink_Default.cs
- TemplatedMailWebEventProvider.cs
- BitmapMetadata.cs
- ObjectDataSource.cs
- StringHandle.cs
- DynamicRouteExpression.cs
- HwndSubclass.cs
- XmlSerializerFactory.cs
- AttributeUsageAttribute.cs
- ToolStripSeparator.cs
- TypeUtils.cs
- NetTcpSectionData.cs
- XmlBaseReader.cs
- UrlPath.cs
- MaskedTextProvider.cs
- dsa.cs
- SplitterPanelDesigner.cs
- HttpProxyTransportBindingElement.cs
- DispatcherHookEventArgs.cs
- MenuRenderer.cs
- ClientSession.cs
- TransactionBridgeSection.cs
- CollectionChangeEventArgs.cs
- WebZone.cs
- SqlCommand.cs
- RemoteWebConfigurationHostServer.cs
- StylusLogic.cs
- BookmarkUndoUnit.cs
- CanonicalFontFamilyReference.cs
- PathStreamGeometryContext.cs
- HtmlImage.cs
- TransformPattern.cs
- FactoryGenerator.cs
- DrawingContextDrawingContextWalker.cs
- EventMemberCodeDomSerializer.cs
- EntityClassGenerator.cs
- PlatformCulture.cs
- DbConnectionHelper.cs
- ConstraintCollection.cs
- StylusPointDescription.cs
- GlyphRunDrawing.cs
- GetPageCompletedEventArgs.cs
- DrawingGroupDrawingContext.cs
- RegexMatch.cs
- XmlObjectSerializer.cs
- SafeBitVector32.cs
- ContainerFilterService.cs
- ViewBox.cs
- OpCodes.cs
- ControlEvent.cs
- ContractMethodInfo.cs
- ComboBoxAutomationPeer.cs
- UriExt.cs
- AuthorizationRuleCollection.cs
- DurableInstanceManager.cs
- Binding.cs