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
- ToolboxItemCollection.cs
- BaseAddressPrefixFilterElement.cs
- CodeChecksumPragma.cs
- SessionEndingEventArgs.cs
- AsymmetricSignatureDeformatter.cs
- HatchBrush.cs
- SystemIPInterfaceProperties.cs
- RegexMatch.cs
- TextTreeTextNode.cs
- ExtentKey.cs
- XmlSchemaCompilationSettings.cs
- AssociationEndMember.cs
- AnnotationService.cs
- SQLBytesStorage.cs
- LineBreak.cs
- ECDiffieHellmanCng.cs
- Directory.cs
- TableDetailsCollection.cs
- ConfigDefinitionUpdates.cs
- RenderData.cs
- ParseHttpDate.cs
- XmlRawWriterWrapper.cs
- ItemTypeToolStripMenuItem.cs
- StateMachineWorkflowDesigner.cs
- Clock.cs
- ServiceContractViewControl.Designer.cs
- DataGridViewColumnStateChangedEventArgs.cs
- MiniParameterInfo.cs
- FileSecurity.cs
- ToolStripStatusLabel.cs
- KerberosReceiverSecurityToken.cs
- StateWorkerRequest.cs
- GcHandle.cs
- PersonalizationAdministration.cs
- ExeConfigurationFileMap.cs
- UniformGrid.cs
- WebServiceMethodData.cs
- Rectangle.cs
- IChannel.cs
- MailMessageEventArgs.cs
- PagedControl.cs
- DataSourceConverter.cs
- CodeNamespaceCollection.cs
- FilteredDataSetHelper.cs
- SHA256.cs
- RowUpdatingEventArgs.cs
- Type.cs
- PolyQuadraticBezierSegment.cs
- DateTimePicker.cs
- VerticalAlignConverter.cs
- ToolStripHighContrastRenderer.cs
- ThemeDictionaryExtension.cs
- EventToken.cs
- SurrogateEncoder.cs
- RequestFactory.cs
- SqlWorkflowInstanceStoreLock.cs
- formatter.cs
- RectIndependentAnimationStorage.cs
- PhysicalAddress.cs
- InstanceCompleteException.cs
- XPathNode.cs
- HostedHttpContext.cs
- TextRangeAdaptor.cs
- FileUtil.cs
- ArgumentNullException.cs
- QilScopedVisitor.cs
- QueryConverter.cs
- assertwrapper.cs
- CodeGeneratorOptions.cs
- DescendantQuery.cs
- GraphicsPath.cs
- PackagePart.cs
- ListSortDescription.cs
- StreamWriter.cs
- tooltip.cs
- SQLInt16Storage.cs
- Matrix3DConverter.cs
- AmbientProperties.cs
- Int16KeyFrameCollection.cs
- ObjectQueryExecutionPlan.cs
- DbMetaDataFactory.cs
- TextTreeTextElementNode.cs
- ThreadInterruptedException.cs
- ErrorFormatterPage.cs
- CheckBoxRenderer.cs
- SystemTcpConnection.cs
- CellTreeNodeVisitors.cs
- Encoding.cs
- DataKeyPropertyAttribute.cs
- FragmentNavigationEventArgs.cs
- EventSourceCreationData.cs
- ListenerAdapterBase.cs
- HtmlControlAdapter.cs
- UniqueCodeIdentifierScope.cs
- ArraySortHelper.cs
- CountdownEvent.cs
- ValidatedControlConverter.cs
- FormViewInsertedEventArgs.cs
- ImageInfo.cs
- SqlStatistics.cs