Code:
/ FX-1434 / FX-1434 / 1.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
- Image.cs
- ReservationNotFoundException.cs
- CategoryAttribute.cs
- CultureInfo.cs
- TransformPattern.cs
- PanningMessageFilter.cs
- PrimitiveCodeDomSerializer.cs
- XmlMemberMapping.cs
- Collection.cs
- DoubleStorage.cs
- NullableDecimalAverageAggregationOperator.cs
- _UriSyntax.cs
- DBParameter.cs
- Unit.cs
- StylusEditingBehavior.cs
- OdbcParameter.cs
- TextEvent.cs
- FileAuthorizationModule.cs
- ContentDisposition.cs
- TextBox.cs
- ColorBlend.cs
- PathSegmentCollection.cs
- HtmlTernaryTree.cs
- SqlCacheDependencyDatabaseCollection.cs
- EmulateRecognizeCompletedEventArgs.cs
- CompositeDispatchFormatter.cs
- FixedDocumentSequencePaginator.cs
- TreeNodeMouseHoverEvent.cs
- FormViewDeleteEventArgs.cs
- AppDomainProtocolHandler.cs
- WebConvert.cs
- SortDescription.cs
- WindowsSlider.cs
- TextServicesCompartment.cs
- HttpStreamXmlDictionaryWriter.cs
- Privilege.cs
- TimeIntervalCollection.cs
- PieceDirectory.cs
- UniqueIdentifierService.cs
- StickyNote.cs
- Blend.cs
- CodeConditionStatement.cs
- Clause.cs
- TypeDescriptor.cs
- DirectionalAction.cs
- StreamInfo.cs
- ExtensionQuery.cs
- WebReferencesBuildProvider.cs
- KoreanCalendar.cs
- FormViewActionList.cs
- Journal.cs
- HandleValueEditor.cs
- CodeDomLoader.cs
- OdbcCommandBuilder.cs
- TriggerBase.cs
- Token.cs
- login.cs
- DataSet.cs
- SpotLight.cs
- AutomationPatternInfo.cs
- FacetDescription.cs
- InputLanguageSource.cs
- ListViewUpdatedEventArgs.cs
- ErrorWebPart.cs
- Hyperlink.cs
- CodeDOMUtility.cs
- ExpressionEditorAttribute.cs
- RegexGroupCollection.cs
- BridgeDataReader.cs
- ConversionContext.cs
- MediaTimeline.cs
- XPathNavigator.cs
- _NativeSSPI.cs
- UnsafeNativeMethods.cs
- COM2Properties.cs
- GlobalizationSection.cs
- FieldBuilder.cs
- FontWeights.cs
- ToolStripRenderEventArgs.cs
- SystemKeyConverter.cs
- XmlNamespaceMappingCollection.cs
- XmlSchemaAnyAttribute.cs
- EnumConverter.cs
- StatusCommandUI.cs
- XmlUrlResolver.cs
- ThrowHelper.cs
- _KerberosClient.cs
- UpDownEvent.cs
- EntityContainerAssociationSet.cs
- ComboBoxItem.cs
- BehaviorService.cs
- PartitionResolver.cs
- LinqDataView.cs
- DataGridColumnsPage.cs
- EventlogProvider.cs
- RootCodeDomSerializer.cs
- DeviceSpecific.cs
- SafeFileMappingHandle.cs
- OdbcUtils.cs
- StorageComplexPropertyMapping.cs