Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / System / data / design / DataSourceCollectionBase.cs / 1 / DataSourceCollectionBase.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All Rights Reserved. // Information Contained Herein is Proprietary and Confidential. // //----------------------------------------------------------------------------- namespace System.Data.Design{ using System; using System.Collections; using System.ComponentModel; using System.Diagnostics; using System.Globalization; ////// internal abstract class DataSourceCollectionBase : CollectionBase, INamedObjectCollection, IObjectWithParent { private DataSourceComponent collectionHost; internal DataSourceCollectionBase(DataSourceComponent collectionHost) { this.collectionHost = collectionHost; } internal virtual DataSourceComponent CollectionHost { get { return this.collectionHost; } set { this.collectionHost = value; } } protected virtual Type ItemType { get { return typeof(IDataSourceNamedObject); } } protected abstract INameService NameService { get; } [Browsable(false)] object IObjectWithParent.Parent { get { return this.collectionHost; } } protected virtual string CreateUniqueName(IDataSourceNamedObject value) { string suggestedName = StringUtil.NotEmpty(value.Name) ? value.Name : value.PublicTypeName; return NameService.CreateUniqueName(this, suggestedName, 1); } ////// This function will check to see namedObject have a name conflict with the names /// used in the collection and fix the name for namedObject if there is a conflict /// /// internal protected virtual void EnsureUniqueName(IDataSourceNamedObject namedObject) { if (namedObject.Name == null || namedObject.Name.Length == 0 || this.FindObject(namedObject.Name) != null) { namedObject.Name = CreateUniqueName(namedObject); } } internal virtual protected IDataSourceNamedObject FindObject(string name) { IEnumerator e = this.InnerList.GetEnumerator(); while( e.MoveNext() ) { IDataSourceNamedObject existing = (IDataSourceNamedObject) e.Current; if (StringUtil.EqualValue(existing.Name, name)) { return existing; } } return null; } public void InsertBefore(object value, object refObject) { int index = List.IndexOf(refObject); if (index >= 0) { List.Insert(index, value); } else { List.Add(value); } } protected override void OnValidate( object value ) { base.OnValidate( value ); ValidateType( value ); } public void Remove(string name) { INamedObject obj = NamedObjectUtil.Find( this, name ); if( obj != null ) { this.List.Remove( obj ); } } ////// This function only check the name to be valid, typically used by Insert function, which already ensure the name is unique /// /// internal protected virtual void ValidateName(IDataSourceNamedObject obj) { this.NameService.ValidateName(obj.Name); } ////// This function checks the name to be unique and valid, typically used by rename /// /// /// internal protected virtual void ValidateUniqueName(IDataSourceNamedObject obj, string proposedName) { this.NameService.ValidateUniqueName(this, obj, proposedName); } protected void ValidateType( object value ) { if (!ItemType.IsInstanceOfType(value)) { throw new InternalException(VSDExceptions.DataSource.INVALID_COLLECTIONTYPE_MSG, VSDExceptions.DataSource.INVALID_COLLECTIONTYPE_CODE, true); } } public INameService GetNameService() { return NameService; } } } // 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
- ToolStripArrowRenderEventArgs.cs
- ProviderConnectionPointCollection.cs
- SspiWrapper.cs
- SaveFileDialog.cs
- remotingproxy.cs
- HtmlContainerControl.cs
- UriSection.cs
- KerberosRequestorSecurityToken.cs
- BitmapData.cs
- ListView.cs
- SerializationStore.cs
- DbConnectionPool.cs
- RuntimeResourceSet.cs
- WindowClosedEventArgs.cs
- WindowsStatusBar.cs
- RSAPKCS1SignatureFormatter.cs
- DataTable.cs
- RuntimeWrappedException.cs
- BrowserInteropHelper.cs
- EtwTrace.cs
- RequestResizeEvent.cs
- ComNativeDescriptor.cs
- PriorityQueue.cs
- DataGridViewBand.cs
- RegularExpressionValidator.cs
- ReceiveMessageRecord.cs
- DataControlFieldCell.cs
- PrintDocument.cs
- CodeAttributeDeclarationCollection.cs
- TemplateParser.cs
- TimersDescriptionAttribute.cs
- FrameworkElement.cs
- TrustLevelCollection.cs
- DataGridSortCommandEventArgs.cs
- TreeNodeCollection.cs
- ProcessThread.cs
- Pair.cs
- UpdateManifestForBrowserApplication.cs
- ViewStateException.cs
- StringCollection.cs
- EventNotify.cs
- BamlResourceContent.cs
- Maps.cs
- _TransmitFileOverlappedAsyncResult.cs
- ContainerVisual.cs
- XmlImplementation.cs
- EmptyStringExpandableObjectConverter.cs
- DataConnectionHelper.cs
- DocumentPageView.cs
- MediaPlayer.cs
- XmlSortKeyAccumulator.cs
- BuilderInfo.cs
- ColorContextHelper.cs
- DeferredReference.cs
- XmlCollation.cs
- XmlDomTextWriter.cs
- Atom10FormatterFactory.cs
- DmlSqlGenerator.cs
- Char.cs
- ProviderCommandInfoUtils.cs
- EditorZone.cs
- XmlAttributes.cs
- MaskedTextBoxTextEditor.cs
- CallSite.cs
- NavigationProperty.cs
- NotifyParentPropertyAttribute.cs
- TypeSystemProvider.cs
- Types.cs
- SudsWriter.cs
- FtpRequestCacheValidator.cs
- DispatcherExceptionFilterEventArgs.cs
- CollectionBuilder.cs
- _ProxyChain.cs
- XmlResolver.cs
- Int16Converter.cs
- DataGridViewTopLeftHeaderCell.cs
- LayoutTable.cs
- OleDbDataAdapter.cs
- AnimatedTypeHelpers.cs
- UICuesEvent.cs
- ElementUtil.cs
- TextChangedEventArgs.cs
- StatusBarPanelClickEvent.cs
- XmlSignatureManifest.cs
- infer.cs
- Message.cs
- RealizationDrawingContextWalker.cs
- XmlIterators.cs
- CertificateReferenceElement.cs
- DataGridViewCellLinkedList.cs
- FixedSOMLineCollection.cs
- CodeFieldReferenceExpression.cs
- ServicePoint.cs
- ApplicationHost.cs
- DynamicValidatorEventArgs.cs
- SchemaRegistration.cs
- AudioLevelUpdatedEventArgs.cs
- Rect3DValueSerializer.cs
- Stacktrace.cs
- DeferredElementTreeState.cs