Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Data / System / Data / ColumnTypeConverter.cs / 1 / ColumnTypeConverter.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
// [....]
// [....]
//-----------------------------------------------------------------------------
/*
*/
namespace System.Data {
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Diagnostics;
using System.Globalization;
using System.Data.SqlTypes;
///
/// Provides a type
/// converter that can be used to populate a list box with available types.
///
internal sealed class ColumnTypeConverter : TypeConverter {
private static Type[] types = new Type[] {
typeof(Boolean),
typeof(Byte),
typeof(Byte[]),
typeof(Char),
typeof(DateTime),
typeof(Decimal),
typeof(Double),
typeof(Guid),
typeof(Int16),
typeof(Int32),
typeof(Int64),
typeof(object),
typeof(SByte),
typeof(Single),
typeof(string),
typeof(TimeSpan),
typeof(UInt16),
typeof(UInt32),
typeof(UInt64),
typeof(SqlInt16),
typeof(SqlInt32),
typeof(SqlInt64),
typeof(SqlDecimal),
typeof(SqlSingle),
typeof(SqlDouble),
typeof(SqlString),
typeof(SqlBoolean),
typeof(SqlBinary),
typeof(SqlByte),
typeof(SqlDateTime),
typeof(SqlGuid),
typeof(SqlMoney),
typeof(SqlBytes),
typeof(SqlChars),
typeof(SqlXml)
};
private StandardValuesCollection values;
// converter classes should have public ctor
public ColumnTypeConverter() {
}
///
/// Gets a value indicating whether this converter can
/// convert an object to the given destination type using the context.
///
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) {
if (destinationType == typeof(InstanceDescriptor)) {
return true;
}
return base.CanConvertTo(context, destinationType);
}
///
/// Converts the given value object to the specified destination type.
///
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) {
if (destinationType == null) {
throw new ArgumentNullException("destinationType");
}
if (destinationType == typeof(string)) {
if (value == null) {
return String.Empty;
}
else {
value.ToString();
}
}
if (value != null && destinationType == typeof(InstanceDescriptor)) {
Object newValue = value;
if (value is string) {
for (int i = 0; i < types.Length; i++) {
if (types[i].ToString().Equals(value))
newValue = types[i];
}
}
if (value is Type || value is string) {
System.Reflection.MethodInfo method = typeof(Type).GetMethod("GetType", new Type[] {typeof(string)}); // change done for security review
if (method != null) {
return new InstanceDescriptor(method, new object[] {((Type)newValue).AssemblyQualifiedName});
}
}
}
return base.ConvertTo(context, culture, value, destinationType);
}
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) {
if (sourceType == typeof(string)) {
return true;
}
return base.CanConvertTo(context, sourceType);
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) {
if (value != null && value.GetType() == typeof(string)) {
for (int i = 0; i < types.Length; i++) {
if (types[i].ToString().Equals(value))
return types[i];
}
return typeof(string);
}
return base.ConvertFrom(context, culture, value);
}
///
/// Gets a collection of standard values for the data type this validator is
/// designed for.
///
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) {
if (values == null) {
object[] objTypes;
if (types != null) {
objTypes = new object[types.Length];
Array.Copy(types, objTypes, types.Length);
}
else {
objTypes = null;
}
values = new StandardValuesCollection(objTypes);
}
return values;
}
///
/// Gets a value indicating whether the list of standard values returned from
/// is an exclusive list.
///
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) {
return true;
}
///
/// Gets a value indicating whether this object supports a
/// standard set of values that can be picked from a list using the specified
/// context.
///
public override bool GetStandardValuesSupported(ITypeDescriptorContext context) {
return 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
- filewebresponse.cs
- WebPartTransformerCollection.cs
- Menu.cs
- Odbc32.cs
- MethodBuilderInstantiation.cs
- UrlMappingsSection.cs
- ToolBar.cs
- DetailsViewPagerRow.cs
- FixedTextSelectionProcessor.cs
- XsltConvert.cs
- FastEncoder.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- Executor.cs
- StateElement.cs
- TextTabProperties.cs
- RestHandlerFactory.cs
- ErrorHandlerFaultInfo.cs
- DesignerActionService.cs
- Optimizer.cs
- ToolStripDropDownClosingEventArgs.cs
- StateBag.cs
- Metafile.cs
- UdpSocketReceiveManager.cs
- TextBox.cs
- IdleTimeoutMonitor.cs
- DtrList.cs
- CustomAttributeSerializer.cs
- CustomError.cs
- Speller.cs
- SqlInfoMessageEvent.cs
- TimeZone.cs
- WorkflowViewService.cs
- CapabilitiesPattern.cs
- SHA384Managed.cs
- WeakReference.cs
- XPathChildIterator.cs
- CreatingCookieEventArgs.cs
- TraceHandlerErrorFormatter.cs
- WebHttpBindingCollectionElement.cs
- X509IssuerSerialKeyIdentifierClause.cs
- XhtmlBasicCalendarAdapter.cs
- elementinformation.cs
- ArglessEventHandlerProxy.cs
- HtmlTable.cs
- FixedSchema.cs
- ObjectHelper.cs
- EventHandlersStore.cs
- XpsS0ValidatingLoader.cs
- EntityContainerRelationshipSet.cs
- SmiRequestExecutor.cs
- IsolatedStorageFileStream.cs
- DataSourceControlBuilder.cs
- DocumentViewerAutomationPeer.cs
- GridViewCellAutomationPeer.cs
- TransformerConfigurationWizardBase.cs
- DataDocumentXPathNavigator.cs
- CodeGroup.cs
- WebPartCatalogAddVerb.cs
- HuffModule.cs
- WebPartMinimizeVerb.cs
- XmlRootAttribute.cs
- TextEditorLists.cs
- ISO2022Encoding.cs
- ExpressionReplacer.cs
- OptimizedTemplateContentHelper.cs
- TextTreeDeleteContentUndoUnit.cs
- SequenceNumber.cs
- SelfIssuedTokenFactoryCredential.cs
- WebBaseEventKeyComparer.cs
- ToolStripPanelCell.cs
- TcpClientSocketManager.cs
- DbMetaDataFactory.cs
- SqlXml.cs
- LayoutEditorPart.cs
- TraceSection.cs
- ObjectViewFactory.cs
- PriorityItem.cs
- RSAPKCS1SignatureDeformatter.cs
- Gdiplus.cs
- ExpressionBuilder.cs
- MonikerProxyAttribute.cs
- util.cs
- StringWriter.cs
- Ipv6Element.cs
- ObjectAnimationBase.cs
- SimpleWorkerRequest.cs
- ConfigurationHandlersInstallComponent.cs
- AddInDeploymentState.cs
- ToolStripProgressBar.cs
- Buffer.cs
- RemotingConfigParser.cs
- ResourceDefaultValueAttribute.cs
- Aggregates.cs
- Screen.cs
- CommonObjectSecurity.cs
- DataGridRow.cs
- SmiEventSink.cs
- SignedXmlDebugLog.cs
- DecimalStorage.cs
- X509Chain.cs