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
- HttpRequestCacheValidator.cs
- LinearQuaternionKeyFrame.cs
- WindowsAuthenticationModule.cs
- DebuggerAttributes.cs
- ConditionalBranch.cs
- DesignerRegionCollection.cs
- SchemaImporter.cs
- SecurityState.cs
- FilteredAttributeCollection.cs
- NullableLongAverageAggregationOperator.cs
- MethodRental.cs
- PropertyItem.cs
- PolicyUnit.cs
- XXXInfos.cs
- XmlDictionaryReaderQuotas.cs
- DataGridViewColumnCollection.cs
- RijndaelManagedTransform.cs
- InvalidDataContractException.cs
- UrlUtility.cs
- Win32PrintDialog.cs
- AttachedAnnotationChangedEventArgs.cs
- URI.cs
- Accessors.cs
- XsltSettings.cs
- DurableServiceAttribute.cs
- CompressEmulationStream.cs
- TextParagraphProperties.cs
- LocalFileSettingsProvider.cs
- StylusPointPropertyInfo.cs
- ResourceDescriptionAttribute.cs
- PointLightBase.cs
- EntryIndex.cs
- Compiler.cs
- XPathAncestorQuery.cs
- ProfilePropertyMetadata.cs
- ExtentKey.cs
- BamlLocalizableResource.cs
- FlowDocumentPaginator.cs
- EnvironmentPermission.cs
- DispatcherObject.cs
- SystemKeyConverter.cs
- CancellationTokenRegistration.cs
- NativeObjectSecurity.cs
- InternalConfigSettingsFactory.cs
- TransformConverter.cs
- DependencyPropertyChangedEventArgs.cs
- FontStretchConverter.cs
- EndPoint.cs
- nulltextcontainer.cs
- RowSpanVector.cs
- BinaryOperationBinder.cs
- NameValueCollection.cs
- RichTextBoxContextMenu.cs
- TableStyle.cs
- TypeElement.cs
- AspCompat.cs
- ParameterDataSourceExpression.cs
- TextUtf8RawTextWriter.cs
- BamlTreeMap.cs
- BoundColumn.cs
- DataGridTextBox.cs
- DataGridViewLayoutData.cs
- UniqueConstraint.cs
- ListView.cs
- DocumentPageTextView.cs
- Shape.cs
- DBDataPermissionAttribute.cs
- FormsIdentity.cs
- KeyEventArgs.cs
- EventSourceCreationData.cs
- FragmentQueryProcessor.cs
- StringCollection.cs
- ExtensionQuery.cs
- OperatorExpressions.cs
- NameTable.cs
- VideoDrawing.cs
- QuaternionAnimationUsingKeyFrames.cs
- SchemaNotation.cs
- SqlTypesSchemaImporter.cs
- PenLineCapValidation.cs
- ISFClipboardData.cs
- StrongNameIdentityPermission.cs
- SplineKeyFrames.cs
- StrokeNodeOperations.cs
- EncodingInfo.cs
- CodeTypeDeclarationCollection.cs
- DataTrigger.cs
- RelatedCurrencyManager.cs
- XPathScanner.cs
- FormClosedEvent.cs
- EditingCommands.cs
- PersonalizablePropertyEntry.cs
- jithelpers.cs
- parserscommon.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- XpsManager.cs
- ClockGroup.cs
- IntPtr.cs
- RenderData.cs
- DataGridColumn.cs