Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / System.Runtime.DurableInstancing / System / Runtime / Collections / ValidatingCollection.cs / 1305376 / ValidatingCollection.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.Runtime.Collections
{
using System.Collections.ObjectModel;
// simple helper class to allow passing in a func that performs validations of
// acceptible values
class ValidatingCollection : Collection
{
public ValidatingCollection()
{
}
public Action OnAddValidationCallback { get; set; }
public Action OnMutateValidationCallback { get; set; }
void OnAdd(T item)
{
if (OnAddValidationCallback != null)
{
OnAddValidationCallback(item);
}
}
void OnMutate()
{
if (OnMutateValidationCallback != null)
{
OnMutateValidationCallback();
}
}
protected override void ClearItems()
{
OnMutate();
base.ClearItems();
}
protected override void InsertItem(int index, T item)
{
OnAdd(item);
base.InsertItem(index, item);
}
protected override void RemoveItem(int index)
{
OnMutate();
base.RemoveItem(index);
}
protected override void SetItem(int index, T item)
{
OnAdd(item);
OnMutate();
base.SetItem(index, item);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.Runtime.Collections
{
using System.Collections.ObjectModel;
// simple helper class to allow passing in a func that performs validations of
// acceptible values
class ValidatingCollection : Collection
{
public ValidatingCollection()
{
}
public Action OnAddValidationCallback { get; set; }
public Action OnMutateValidationCallback { get; set; }
void OnAdd(T item)
{
if (OnAddValidationCallback != null)
{
OnAddValidationCallback(item);
}
}
void OnMutate()
{
if (OnMutateValidationCallback != null)
{
OnMutateValidationCallback();
}
}
protected override void ClearItems()
{
OnMutate();
base.ClearItems();
}
protected override void InsertItem(int index, T item)
{
OnAdd(item);
base.InsertItem(index, item);
}
protected override void RemoveItem(int index)
{
OnMutate();
base.RemoveItem(index);
}
protected override void SetItem(int index, T item)
{
OnAdd(item);
OnMutate();
base.SetItem(index, item);
}
}
}
// 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
- TextEmbeddedObject.cs
- XPathDocumentIterator.cs
- RequestTimeoutManager.cs
- TemplateBaseAction.cs
- SourceInterpreter.cs
- COM2IProvidePropertyBuilderHandler.cs
- InvalidOperationException.cs
- AsyncOperation.cs
- DbInsertCommandTree.cs
- WindowsPrincipal.cs
- PresentationTraceSources.cs
- CollectionContainer.cs
- PeerContact.cs
- DependencyStoreSurrogate.cs
- ModelUtilities.cs
- TrustManagerMoreInformation.cs
- HttpConfigurationSystem.cs
- ProxyElement.cs
- LocalTransaction.cs
- WindowsComboBox.cs
- ListComponentEditorPage.cs
- Substitution.cs
- ResourceAttributes.cs
- AttributeUsageAttribute.cs
- ColorConvertedBitmapExtension.cs
- InheritedPropertyChangedEventArgs.cs
- RangeEnumerable.cs
- MaskedTextBoxTextEditorDropDown.cs
- SignatureResourceHelper.cs
- ListViewCommandEventArgs.cs
- FlowNode.cs
- CodeGroup.cs
- QilSortKey.cs
- Component.cs
- CodeDirectionExpression.cs
- SplineKeyFrames.cs
- EmptyImpersonationContext.cs
- XsltOutput.cs
- DriveNotFoundException.cs
- DesignerActionPanel.cs
- SqlDataSourceFilteringEventArgs.cs
- MethodCallTranslator.cs
- WriteableBitmap.cs
- SqlCharStream.cs
- HtmlFormWrapper.cs
- HostingPreferredMapPath.cs
- ModelPropertyImpl.cs
- SystemIPAddressInformation.cs
- BufferManager.cs
- InProcStateClientManager.cs
- XPathCompileException.cs
- DataFieldConverter.cs
- webeventbuffer.cs
- SafeRightsManagementQueryHandle.cs
- TreeViewTemplateSelector.cs
- BindingElement.cs
- ToolboxCategory.cs
- EntityDataSourceWrapperCollection.cs
- dbenumerator.cs
- AsyncMethodInvoker.cs
- OverlappedAsyncResult.cs
- OperationAbortedException.cs
- WebPartConnectionsCloseVerb.cs
- FileSecurity.cs
- ServiceAuthorizationElement.cs
- PropertyInformationCollection.cs
- WebPartVerbCollection.cs
- RegexParser.cs
- PassportAuthenticationModule.cs
- BindingWorker.cs
- ConfigurationStrings.cs
- CompositionCommandSet.cs
- IntSecurity.cs
- RadioButtonList.cs
- IndexOutOfRangeException.cs
- BaseUriWithWildcard.cs
- ItemType.cs
- HttpListenerPrefixCollection.cs
- NavigateUrlConverter.cs
- DataServiceHostFactory.cs
- SafeNativeMethods.cs
- FixedLineResult.cs
- RowBinding.cs
- XamlSerializerUtil.cs
- Selection.cs
- GACIdentityPermission.cs
- PhysicalAddress.cs
- ping.cs
- LineBreakRecord.cs
- KoreanCalendar.cs
- ExpandCollapsePattern.cs
- EventWaitHandle.cs
- CleanUpVirtualizedItemEventArgs.cs
- PopOutPanel.cs
- TextServicesLoader.cs
- TextUtf8RawTextWriter.cs
- UnsafeNativeMethodsPenimc.cs
- SystemIPInterfaceProperties.cs
- BufferedGraphicsContext.cs
- RuntimeEnvironment.cs