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
- TableAutomationPeer.cs
- TemplateAction.cs
- AmbientLight.cs
- CodePropertyReferenceExpression.cs
- CanonicalXml.cs
- ReferencedCollectionType.cs
- ResourceDictionaryCollection.cs
- ToolStripRenderer.cs
- DesignerOptionService.cs
- FixUpCollection.cs
- CompilerGlobalScopeAttribute.cs
- PrintDialog.cs
- DesignTable.cs
- SequentialWorkflowHeaderFooter.cs
- CategoryGridEntry.cs
- PolicyUtility.cs
- CryptoProvider.cs
- CompiledRegexRunnerFactory.cs
- AssemblyUtil.cs
- Section.cs
- StringFunctions.cs
- DeclarativeConditionsCollection.cs
- RecognizerBase.cs
- ServiceMoniker.cs
- ScriptingScriptResourceHandlerSection.cs
- WebPartAuthorizationEventArgs.cs
- UseManagedPresentationElement.cs
- __Filters.cs
- CodeTypeMemberCollection.cs
- HtmlTableCellCollection.cs
- SocketElement.cs
- Guid.cs
- TabletDeviceInfo.cs
- Quaternion.cs
- QuotedPrintableStream.cs
- ArcSegment.cs
- MatrixUtil.cs
- DeviceSpecificChoice.cs
- LayoutSettings.cs
- BitmapInitialize.cs
- MouseGestureConverter.cs
- Sorting.cs
- oledbmetadatacollectionnames.cs
- DataObjectEventArgs.cs
- XmlSchemaGroupRef.cs
- ActivityExecutionContext.cs
- XamlPathDataSerializer.cs
- XmlAttributeCollection.cs
- DesignerObjectListAdapter.cs
- LinkGrep.cs
- BooleanStorage.cs
- ObjRef.cs
- ForwardPositionQuery.cs
- PnrpPeerResolverElement.cs
- DataGridViewToolTip.cs
- SymbolMethod.cs
- TemplateParser.cs
- PriorityItem.cs
- SelectionItemPattern.cs
- OleDbErrorCollection.cs
- ImageSourceTypeConverter.cs
- OutKeywords.cs
- HttpModulesSection.cs
- DrawingGroup.cs
- ActivationArguments.cs
- StrokeCollectionDefaultValueFactory.cs
- EnumValAlphaComparer.cs
- InvalidDataException.cs
- SqlEnums.cs
- InputBindingCollection.cs
- HideDisabledControlAdapter.cs
- WebPartDescription.cs
- CustomErrorCollection.cs
- XmlCharCheckingWriter.cs
- WsdlBuildProvider.cs
- FontSourceCollection.cs
- DetailsViewRow.cs
- Screen.cs
- Fx.cs
- SourceInterpreter.cs
- TaskFileService.cs
- TreeNodeCollectionEditor.cs
- StylusPoint.cs
- WebPartZoneCollection.cs
- LocalizedNameDescriptionPair.cs
- MetadataSource.cs
- DesignTimeVisibleAttribute.cs
- NominalTypeEliminator.cs
- SystemResourceKey.cs
- Relationship.cs
- DefaultTextStoreTextComposition.cs
- UdpMessageProperty.cs
- TextLine.cs
- TabPanel.cs
- InstanceHandleConflictException.cs
- UserMapPath.cs
- SecurityUtils.cs
- ClientProtocol.cs
- DataSvcMapFileSerializer.cs
- ApplicationTrust.cs