Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Data / System / Data / RelationshipConverter.cs / 1 / RelationshipConverter.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data { using System; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Globalization; sealed internal class RelationshipConverter : ExpandableObjectConverter { // converter classes should have public ctor public RelationshipConverter() { } ////// public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { if (destinationType == typeof(InstanceDescriptor)) { return true; } return base.CanConvertTo(context, destinationType); } ///Gets a value indicating whether this converter can /// convert an object to the given destination type using the context. ////// Converts the given object to another type. The most common types to convert /// are to and from a string object. The default implementation will make a call /// to ToString on the object if the object is valid and if the destination /// type is string. If this cannot convert to the desitnation type, this will /// throw a NotSupportedException. /// public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (destinationType == null) { throw new ArgumentNullException("destinationType"); } System.Reflection.ConstructorInfo ctor = null; object[] values = null; if (destinationType == typeof(InstanceDescriptor) && value is DataRelation) { DataRelation rel = (DataRelation) value; DataTable parentTable = rel.ParentKey.Table; DataTable childTable = rel.ChildKey.Table; if (System.Data.Common.ADP.IsEmpty(parentTable.Namespace) && System.Data.Common.ADP.IsEmpty(childTable.Namespace)) { ctor = typeof(DataRelation).GetConstructor(new Type[] { typeof(string) /*relationName*/, typeof(string) /*parentTableName*/, typeof(string) /*childTableName */, typeof(string[]) /*parentColumnNames */, typeof(string[]) /*childColumnNames*/, typeof(bool) /*nested*/ } ); values = new object[] { rel.RelationName, rel.ParentKey.Table.TableName, rel.ChildKey.Table.TableName,rel.ParentColumnNames, rel.ChildColumnNames, rel.Nested }; } else { ctor = typeof(DataRelation).GetConstructor(new Type[] { typeof(string)/*relationName*/, typeof(string)/*parentTableName*/, typeof(string)/*parentTableNamespace*/, typeof(string)/*childTableName */, typeof(string)/*childTableNamespace */, typeof(string[])/*parentColumnNames */, typeof(string[]) /*childColumnNames*/, typeof(bool) /*nested*/} ); values = new object[] { rel.RelationName, rel.ParentKey.Table.TableName, rel.ParentKey.Table.Namespace, rel.ChildKey.Table.TableName, rel.ChildKey.Table.Namespace, rel.ParentColumnNames, rel.ChildColumnNames, rel.Nested }; } return new InstanceDescriptor(ctor, values); } return base.ConvertTo(context, culture, value, destinationType); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data { using System; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Globalization; sealed internal class RelationshipConverter : ExpandableObjectConverter { // converter classes should have public ctor public RelationshipConverter() { } ////// public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { if (destinationType == typeof(InstanceDescriptor)) { return true; } return base.CanConvertTo(context, destinationType); } ///Gets a value indicating whether this converter can /// convert an object to the given destination type using the context. ////// Converts the given object to another type. The most common types to convert /// are to and from a string object. The default implementation will make a call /// to ToString on the object if the object is valid and if the destination /// type is string. If this cannot convert to the desitnation type, this will /// throw a NotSupportedException. /// public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (destinationType == null) { throw new ArgumentNullException("destinationType"); } System.Reflection.ConstructorInfo ctor = null; object[] values = null; if (destinationType == typeof(InstanceDescriptor) && value is DataRelation) { DataRelation rel = (DataRelation) value; DataTable parentTable = rel.ParentKey.Table; DataTable childTable = rel.ChildKey.Table; if (System.Data.Common.ADP.IsEmpty(parentTable.Namespace) && System.Data.Common.ADP.IsEmpty(childTable.Namespace)) { ctor = typeof(DataRelation).GetConstructor(new Type[] { typeof(string) /*relationName*/, typeof(string) /*parentTableName*/, typeof(string) /*childTableName */, typeof(string[]) /*parentColumnNames */, typeof(string[]) /*childColumnNames*/, typeof(bool) /*nested*/ } ); values = new object[] { rel.RelationName, rel.ParentKey.Table.TableName, rel.ChildKey.Table.TableName,rel.ParentColumnNames, rel.ChildColumnNames, rel.Nested }; } else { ctor = typeof(DataRelation).GetConstructor(new Type[] { typeof(string)/*relationName*/, typeof(string)/*parentTableName*/, typeof(string)/*parentTableNamespace*/, typeof(string)/*childTableName */, typeof(string)/*childTableNamespace */, typeof(string[])/*parentColumnNames */, typeof(string[]) /*childColumnNames*/, typeof(bool) /*nested*/} ); values = new object[] { rel.RelationName, rel.ParentKey.Table.TableName, rel.ParentKey.Table.Namespace, rel.ChildKey.Table.TableName, rel.ChildKey.Table.Namespace, rel.ParentColumnNames, rel.ChildColumnNames, rel.Nested }; } return new InstanceDescriptor(ctor, values); } return base.ConvertTo(context, culture, value, destinationType); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ScriptControlDescriptor.cs
- FreezableOperations.cs
- NamespaceList.cs
- PropertyValidationContext.cs
- TagMapCollection.cs
- TrackingServices.cs
- DBCommandBuilder.cs
- GregorianCalendarHelper.cs
- ObjectCacheHost.cs
- PropertyGridView.cs
- CountdownEvent.cs
- ByteAnimationUsingKeyFrames.cs
- XmlSchemaExporter.cs
- PreloadedPackages.cs
- PersonalizationStateQuery.cs
- PropertyChangedEventArgs.cs
- Point4D.cs
- StorageScalarPropertyMapping.cs
- ActiveXSerializer.cs
- DataGrid.cs
- QilLiteral.cs
- TypeHelper.cs
- DbConnectionStringBuilder.cs
- DataGridViewComboBoxColumn.cs
- SnapshotChangeTrackingStrategy.cs
- EdmToObjectNamespaceMap.cs
- AssociationTypeEmitter.cs
- UpdateCommand.cs
- Divide.cs
- precedingsibling.cs
- WebPartChrome.cs
- PasswordRecovery.cs
- LocalizedNameDescriptionPair.cs
- ValidatorCollection.cs
- SortKey.cs
- DataPagerFieldCollection.cs
- EncodingNLS.cs
- PeerCollaboration.cs
- Win32SafeHandles.cs
- ConnectionPoint.cs
- XmlSchemaImporter.cs
- GatewayDefinition.cs
- DocumentOrderQuery.cs
- LicenseException.cs
- Single.cs
- DynamicPropertyReader.cs
- RelatedCurrencyManager.cs
- ErrorTableItemStyle.cs
- PanelStyle.cs
- DES.cs
- UriParserTemplates.cs
- QueryExpr.cs
- EntityObject.cs
- EmptyControlCollection.cs
- ScaleTransform3D.cs
- PhysicalAddress.cs
- MobileControlBuilder.cs
- Transform.cs
- SoapAttributeOverrides.cs
- EntityDataSourceWrapper.cs
- ConfigViewGenerator.cs
- DataSourceHelper.cs
- EntityClassGenerator.cs
- SqlLiftWhereClauses.cs
- XmlCharType.cs
- Brushes.cs
- DragStartedEventArgs.cs
- BuildProviderAppliesToAttribute.cs
- ServicePointManager.cs
- assertwrapper.cs
- Positioning.cs
- DataDocumentXPathNavigator.cs
- RenderDataDrawingContext.cs
- GB18030Encoding.cs
- TemplateBindingExtensionConverter.cs
- UnsafeNativeMethodsMilCoreApi.cs
- CrossSiteScriptingValidation.cs
- TaiwanLunisolarCalendar.cs
- SoapSchemaExporter.cs
- Transform3DCollection.cs
- CompositionAdorner.cs
- ApplicationServicesHostFactory.cs
- RemotingServices.cs
- LookupNode.cs
- rsa.cs
- ContainsRowNumberChecker.cs
- ServiceNameElementCollection.cs
- AdornedElementPlaceholder.cs
- NativeMethods.cs
- ECDiffieHellman.cs
- MappingMetadataHelper.cs
- KeyInfo.cs
- NavigationProperty.cs
- ServiceRoute.cs
- ReferenceConverter.cs
- JournalNavigationScope.cs
- NamespaceList.cs
- AsnEncodedData.cs
- QilLoop.cs
- ArglessEventHandlerProxy.cs