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
- EntityTransaction.cs
- NavigatorOutput.cs
- PasswordBox.cs
- Model3DGroup.cs
- EventWaitHandleSecurity.cs
- InfoCardHelper.cs
- NameGenerator.cs
- CreateUserWizardAutoFormat.cs
- MembershipPasswordException.cs
- XmlUtil.cs
- _RegBlobWebProxyDataBuilder.cs
- TypeListConverter.cs
- Propagator.ExtentPlaceholderCreator.cs
- DesignTimeValidationFeature.cs
- DrawingContextDrawingContextWalker.cs
- PolicyConversionContext.cs
- TiffBitmapEncoder.cs
- OdbcConnectionStringbuilder.cs
- StorageEntitySetMapping.cs
- XmlConvert.cs
- SqlProviderServices.cs
- JoinElimination.cs
- PermissionSet.cs
- XsltSettings.cs
- MetadataWorkspace.cs
- DragDrop.cs
- DependentList.cs
- ContractMethodParameterInfo.cs
- ToolStripItemDesigner.cs
- ObjectStorage.cs
- PropertyEntry.cs
- SimpleHandlerBuildProvider.cs
- Propagator.cs
- RawStylusInputCustomData.cs
- PropertyInfoSet.cs
- WebPartConnectionCollection.cs
- ReceiveErrorHandling.cs
- MimeMultiPart.cs
- EditingMode.cs
- MemoryMappedFileSecurity.cs
- ContractInferenceHelper.cs
- Transaction.cs
- BinaryFormatter.cs
- UmAlQuraCalendar.cs
- BaseAutoFormat.cs
- ADConnectionHelper.cs
- OdbcException.cs
- FrameworkElementAutomationPeer.cs
- Point3DCollectionConverter.cs
- RolePrincipal.cs
- CaseExpr.cs
- PathGeometry.cs
- ControlCachePolicy.cs
- PnrpPermission.cs
- StreamUpdate.cs
- DataListCommandEventArgs.cs
- UriSection.cs
- WebConfigurationHostFileChange.cs
- WebScriptMetadataMessageEncoderFactory.cs
- Form.cs
- httpstaticobjectscollection.cs
- ThreadNeutralSemaphore.cs
- DetailsViewRowCollection.cs
- SimpleBitVector32.cs
- CacheMode.cs
- GridViewColumnHeaderAutomationPeer.cs
- WebPartEditorApplyVerb.cs
- ToolTipService.cs
- MenuAdapter.cs
- XamlVector3DCollectionSerializer.cs
- LayoutTable.cs
- ScriptControlManager.cs
- SqlFunctions.cs
- DataSourceCache.cs
- LinkLabelLinkClickedEvent.cs
- ValidatorCollection.cs
- KeyInfo.cs
- PersonalizableTypeEntry.cs
- StrongNamePublicKeyBlob.cs
- CodeSnippetStatement.cs
- ListViewSortEventArgs.cs
- XmlChildNodes.cs
- FixedTextSelectionProcessor.cs
- DataGridViewRowPrePaintEventArgs.cs
- Expr.cs
- DataControlFieldCell.cs
- BaseTemplateCodeDomTreeGenerator.cs
- PropertyPushdownHelper.cs
- sortedlist.cs
- SystemUdpStatistics.cs
- Overlapped.cs
- RuntimeIdentifierPropertyAttribute.cs
- MailBnfHelper.cs
- SecurityDocument.cs
- Blend.cs
- Baml2006SchemaContext.cs
- Panel.cs
- PublisherIdentityPermission.cs
- EdmTypeAttribute.cs
- OrderedDictionaryStateHelper.cs