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 Nullable then 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
- XsdDataContractImporter.cs
- JsonReaderWriterFactory.cs
- FixedDocumentPaginator.cs
- SignedInfo.cs
- NotifyInputEventArgs.cs
- SafeCryptContextHandle.cs
- WindowsToolbarAsMenu.cs
- TemplateFactory.cs
- XsltLoader.cs
- ManagedFilter.cs
- BuildProviderAppliesToAttribute.cs
- DesignerWebPartChrome.cs
- DictionaryContent.cs
- CfgParser.cs
- wgx_sdk_version.cs
- DocumentCollection.cs
- Stack.cs
- WmlPanelAdapter.cs
- FontStretchConverter.cs
- MessageSecurityTokenVersion.cs
- DefaultBinder.cs
- DoubleCollectionValueSerializer.cs
- CheckBoxStandardAdapter.cs
- DataObject.cs
- TextServicesPropertyRanges.cs
- FilterQueryOptionExpression.cs
- LeafCellTreeNode.cs
- RepeatBehavior.cs
- TabletDevice.cs
- ExceptionRoutedEventArgs.cs
- XmlDocument.cs
- SparseMemoryStream.cs
- HeaderCollection.cs
- ResourceAttributes.cs
- RestHandler.cs
- ExtractCollection.cs
- GlyphInfoList.cs
- DirectoryRedirect.cs
- ConnectionStringsExpressionBuilder.cs
- InsufficientMemoryException.cs
- x509store.cs
- ProxyWebPart.cs
- SessionIDManager.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- Scene3D.cs
- CacheChildrenQuery.cs
- PenThreadWorker.cs
- XmlNodeReader.cs
- ScriptingAuthenticationServiceSection.cs
- AssemblySettingAttributes.cs
- BinaryNode.cs
- BevelBitmapEffect.cs
- Screen.cs
- EventMap.cs
- TextEditorCopyPaste.cs
- ContextConfiguration.cs
- PerformanceCounterLib.cs
- CustomErrorsSection.cs
- WebPartEditVerb.cs
- SqlStatistics.cs
- DefaultSerializationProviderAttribute.cs
- RequestSecurityTokenResponse.cs
- HttpWebResponse.cs
- SafeThreadHandle.cs
- unitconverter.cs
- XPathConvert.cs
- CodeIterationStatement.cs
- Odbc32.cs
- NativeMethods.cs
- _OSSOCK.cs
- BoolExpr.cs
- Vector3DAnimationUsingKeyFrames.cs
- ButtonStandardAdapter.cs
- BaseTreeIterator.cs
- XmlSchemaGroup.cs
- TreeViewItem.cs
- BaseTreeIterator.cs
- Regex.cs
- ReferenceSchema.cs
- HostProtectionPermission.cs
- Rule.cs
- MouseButton.cs
- UserValidatedEventArgs.cs
- PrefixQName.cs
- FontUnitConverter.cs
- TextOnlyOutput.cs
- ManualResetEvent.cs
- PropertyMapper.cs
- KeyNotFoundException.cs
- Latin1Encoding.cs
- NameTable.cs
- CompatibleIComparer.cs
- BevelBitmapEffect.cs
- InvalidPrinterException.cs
- Axis.cs
- SqlInternalConnectionTds.cs
- CompensatableTransactionScopeActivity.cs
- ParameterCollectionEditorForm.cs
- XmlNode.cs
- JobCollate.cs