Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / AddIn / AddIn / System / Addin / Pipeline / ListContractAdapter.cs / 1305376 / ListContractAdapter.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: ListContractAdapter ** ** ===========================================================*/ using System; using System.Collections.Generic; using System.AddIn.Contract; using System.Diagnostics.Contracts; namespace System.AddIn.Pipeline { internal class ListContractAdapter: ContractBase, IListContract { private IList m_list; private Converter m_wrapper; private Converter m_unwrapper; public ListContractAdapter(IList source, Converter wrapper, Converter unwrapper) { if (source == null) throw new ArgumentNullException("source"); if (wrapper == null) throw new ArgumentNullException("wrapper"); if (unwrapper == null) throw new ArgumentNullException("unwrapper"); if (!typeof(U).IsSerializable && !typeof(IContract).IsAssignableFrom(typeof(U))) throw new ArgumentException(Res.TypeShouldBeSerializableOrIContract, typeof(U).Name); System.Diagnostics.Contracts.Contract.EndContractBlock(); m_list = source; m_wrapper = wrapper; m_unwrapper = unwrapper; } public void Add(U item) { m_list.Add(m_unwrapper(item)); } public void Clear() { m_list.Clear(); } public bool Contains(U item) { return m_list.Contains(m_unwrapper(item)); } public int IndexOf(U item) { return m_list.IndexOf(m_unwrapper(item)); } public void Insert(int index, U item) { m_list.Insert(index, m_unwrapper(item)); } public bool Remove(U item) { return m_list.Remove(m_unwrapper(item)); } public void RemoveAt(int index) { m_list.RemoveAt(index); } public U GetItem(int index) { return m_wrapper(m_list[index]); } public void SetItem(int index, U item) { m_list[index] = m_unwrapper(item); } public int GetCount() { return m_list.Count; } public bool GetIsReadOnly() { return m_list.IsReadOnly; } public IEnumeratorContract GetEnumeratorContract() { return new ListEnumeratorAdapter (m_list.GetEnumerator(), m_wrapper); } } internal class ListEnumeratorAdapter : ContractBase, IEnumeratorContract { IEnumerator m_enumerator; Converter m_wrapper; public ListEnumeratorAdapter(IEnumerator enumerator, Converter wrapper) { if (enumerator == null) throw new ArgumentNullException("enumerator"); if (wrapper == null) throw new ArgumentNullException("wrapper"); System.Diagnostics.Contracts.Contract.EndContractBlock(); m_enumerator = enumerator; m_wrapper = wrapper; } public U GetCurrent() { return m_wrapper(m_enumerator.Current); } public bool MoveNext() { return m_enumerator.MoveNext(); } public void Reset() { m_enumerator.Reset(); } public void Dispose() { m_enumerator.Dispose(); } } } // 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
- DeclarativeCatalogPart.cs
- StoreItemCollection.Loader.cs
- MenuBindingsEditorForm.cs
- TemplateControlCodeDomTreeGenerator.cs
- DbDataSourceEnumerator.cs
- SqlTriggerContext.cs
- HuffmanTree.cs
- AudioSignalProblemOccurredEventArgs.cs
- BinHexDecoder.cs
- DataTemplate.cs
- SqlSelectStatement.cs
- RequestCacheValidator.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- FamilyMap.cs
- __ConsoleStream.cs
- WindowsTokenRoleProvider.cs
- TemplatePagerField.cs
- ManipulationInertiaStartingEventArgs.cs
- ProgressBarRenderer.cs
- MediaPlayerState.cs
- Roles.cs
- StateInitialization.cs
- DataGridViewCellStyle.cs
- MultiSelector.cs
- Root.cs
- VirtualDirectoryMappingCollection.cs
- MergeFailedEvent.cs
- DispatcherExceptionFilterEventArgs.cs
- DeviceSpecificChoiceCollection.cs
- SafeFileHandle.cs
- MutexSecurity.cs
- TrustManagerMoreInformation.cs
- ListItemCollection.cs
- DebugView.cs
- StylusPointPropertyInfoDefaults.cs
- HostedHttpRequestAsyncResult.cs
- RelationshipNavigation.cs
- ManualResetEvent.cs
- MenuItemCollectionEditor.cs
- ProgressBarBrushConverter.cs
- ScaleTransform.cs
- StrokeCollection.cs
- Expr.cs
- XamlReader.cs
- SamlSecurityTokenAuthenticator.cs
- Executor.cs
- StringHandle.cs
- RegisteredDisposeScript.cs
- XamlVector3DCollectionSerializer.cs
- DesignerActionItemCollection.cs
- MetaTableHelper.cs
- DataGridCaption.cs
- SequentialActivityDesigner.cs
- SID.cs
- sqlinternaltransaction.cs
- DocumentEventArgs.cs
- SelectionBorderGlyph.cs
- XpsDigitalSignature.cs
- PrePostDescendentsWalker.cs
- PaperSize.cs
- ImmComposition.cs
- CodeBlockBuilder.cs
- EtwTrackingBehaviorElement.cs
- EntityDesignerBuildProvider.cs
- Version.cs
- DataGridParentRows.cs
- DNS.cs
- InputBinder.cs
- WebBrowserNavigatedEventHandler.cs
- CustomErrorsSectionWrapper.cs
- UIElement3D.cs
- QueryPageSettingsEventArgs.cs
- TerminatorSinks.cs
- JumpItem.cs
- XmlSyndicationContent.cs
- TdsParserSafeHandles.cs
- KeySplineConverter.cs
- JsonEnumDataContract.cs
- ClrProviderManifest.cs
- InkCanvasSelection.cs
- ToolStripSeparatorRenderEventArgs.cs
- SQLMoneyStorage.cs
- DbBuffer.cs
- RepeaterItemCollection.cs
- EventlogProvider.cs
- RightNameExpirationInfoPair.cs
- ReadOnlyDictionary.cs
- StringKeyFrameCollection.cs
- ConfigXmlText.cs
- StringValidator.cs
- LongValidator.cs
- IOThreadScheduler.cs
- ReceiveMessageAndVerifySecurityAsyncResultBase.cs
- BaseAddressElementCollection.cs
- ComplexBindingPropertiesAttribute.cs
- EventArgs.cs
- OptimizerPatterns.cs
- OleDbWrapper.cs
- WindowsGraphicsWrapper.cs
- CodeExpressionStatement.cs