Code:
/ 4.0 / 4.0 / 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. // ==++== // // 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
- ClientSettingsSection.cs
- AssertSection.cs
- ImageKeyConverter.cs
- TextContainerChangedEventArgs.cs
- xmlfixedPageInfo.cs
- CodeObject.cs
- PermissionSetEnumerator.cs
- Material.cs
- BasePattern.cs
- StdValidatorsAndConverters.cs
- XpsDocumentEvent.cs
- SqlDataRecord.cs
- ScrollProperties.cs
- ViewBase.cs
- DbRetry.cs
- SourceExpressionException.cs
- webeventbuffer.cs
- RegexCode.cs
- ThrowHelper.cs
- AuthenticatedStream.cs
- CmsInterop.cs
- GenericEnumerator.cs
- DataComponentMethodGenerator.cs
- HttpServerProtocol.cs
- PluralizationService.cs
- MLangCodePageEncoding.cs
- HttpResponse.cs
- CatalogZoneBase.cs
- SocketElement.cs
- BitmapVisualManager.cs
- QueryableFilterUserControl.cs
- ExpressionQuoter.cs
- PermissionSetTriple.cs
- ScriptingScriptResourceHandlerSection.cs
- DragCompletedEventArgs.cs
- DocumentPageTextView.cs
- LocatorPartList.cs
- HMACRIPEMD160.cs
- QuinticEase.cs
- PngBitmapEncoder.cs
- TransformerTypeCollection.cs
- Peer.cs
- OdbcConnectionOpen.cs
- DataAdapter.cs
- DataGridPagerStyle.cs
- X509RecipientCertificateClientElement.cs
- messageonlyhwndwrapper.cs
- Msec.cs
- SchemaMapping.cs
- DataGridViewButtonColumn.cs
- SafeFileMapViewHandle.cs
- SpeechDetectedEventArgs.cs
- SqlExpressionNullability.cs
- PeerInvitationResponse.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- UserNameSecurityTokenProvider.cs
- RtfControls.cs
- SrgsRule.cs
- DataGridLinkButton.cs
- StatusStrip.cs
- DmlSqlGenerator.cs
- MethodToken.cs
- NonParentingControl.cs
- ReplyChannelBinder.cs
- BuildProviderAppliesToAttribute.cs
- DateTimePickerDesigner.cs
- Resources.Designer.cs
- ContextMenuAutomationPeer.cs
- SrgsGrammar.cs
- ObjectResult.cs
- TransformedBitmap.cs
- NCryptNative.cs
- ListItemCollection.cs
- AnimatedTypeHelpers.cs
- DiscoveryClientDuplexChannel.cs
- RangeValidator.cs
- ToolStripContainerActionList.cs
- BuildManager.cs
- Point3D.cs
- SymbolDocumentInfo.cs
- InvalidCastException.cs
- XamlFilter.cs
- ListenDesigner.cs
- ThemeableAttribute.cs
- ComponentCache.cs
- Attributes.cs
- SplitterPanel.cs
- XmlTextReader.cs
- TypeConstant.cs
- PointConverter.cs
- Util.cs
- ObjectReferenceStack.cs
- MessageQueueConverter.cs
- PrinterUnitConvert.cs
- AnnotationObservableCollection.cs
- EntityViewGenerator.cs
- safemediahandle.cs
- OAVariantLib.cs
- StatusBar.cs
- CodeRegionDirective.cs