Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / RelationshipConverter.cs / 1305376 / 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
- InkCanvasSelection.cs
- ValidatorCollection.cs
- UnionCqlBlock.cs
- Utilities.cs
- FrameworkElementFactory.cs
- SchemaSetCompiler.cs
- Pair.cs
- ContainsRowNumberChecker.cs
- counter.cs
- OrderedDictionary.cs
- LinearKeyFrames.cs
- ProviderUtil.cs
- EntityDataSourceMemberPath.cs
- SafeEventLogReadHandle.cs
- ProxyFragment.cs
- OdbcConnectionOpen.cs
- BuildProviderCollection.cs
- DependencyPropertyHelper.cs
- SiteMap.cs
- ValidationErrorEventArgs.cs
- PropertyChangeTracker.cs
- XmlQuerySequence.cs
- EncodingInfo.cs
- ConfigurationLocation.cs
- QilNode.cs
- KeyboardDevice.cs
- AvTrace.cs
- SqlCacheDependency.cs
- KeyInstance.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- WindowsListViewItem.cs
- RtfToXamlReader.cs
- Registry.cs
- WsdlBuildProvider.cs
- IsolatedStorageException.cs
- FormsAuthenticationModule.cs
- SubclassTypeValidator.cs
- MsmqReceiveHelper.cs
- DataGridViewButtonCell.cs
- validation.cs
- StylusPointDescription.cs
- BitmapCodecInfo.cs
- PermissionRequestEvidence.cs
- DynamicResourceExtension.cs
- MergeLocalizationDirectives.cs
- TextEditor.cs
- ItemCheckedEvent.cs
- ExecutionContext.cs
- RowVisual.cs
- CommandEventArgs.cs
- FormsAuthenticationUser.cs
- TextReader.cs
- WhitespaceRuleLookup.cs
- ErrorProvider.cs
- RuntimeArgumentHandle.cs
- DrawItemEvent.cs
- PageContentAsyncResult.cs
- HttpResponseInternalWrapper.cs
- DecodeHelper.cs
- Int32CAMarshaler.cs
- LockRecoveryTask.cs
- FilterElement.cs
- WebChannelFactory.cs
- ECDiffieHellmanCngPublicKey.cs
- ResourceDescriptionAttribute.cs
- MonthChangedEventArgs.cs
- XmlCollation.cs
- DoubleLinkListEnumerator.cs
- EventRecordWrittenEventArgs.cs
- WindowsImpersonationContext.cs
- ReferentialConstraintRoleElement.cs
- DataGridAddNewRow.cs
- DbConnectionPoolGroup.cs
- DBSqlParser.cs
- ConnectionProviderAttribute.cs
- OptimizedTemplateContentHelper.cs
- FrameworkTextComposition.cs
- ParameterModifier.cs
- DataGridViewColumnCollectionEditor.cs
- LocalBuilder.cs
- TextPattern.cs
- DesignTimeVisibleAttribute.cs
- PageContentCollection.cs
- TextSimpleMarkerProperties.cs
- DateTimeOffsetStorage.cs
- HttpContext.cs
- SecurityDocument.cs
- BindableTemplateBuilder.cs
- ChildrenQuery.cs
- Function.cs
- HttpSocketManager.cs
- ScriptingScriptResourceHandlerSection.cs
- SqlParameterCollection.cs
- FieldNameLookup.cs
- BooleanExpr.cs
- CodeDefaultValueExpression.cs
- FamilyMapCollection.cs
- autovalidator.cs
- HitTestWithGeometryDrawingContextWalker.cs
- PackageFilter.cs