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
- CancellationTokenRegistration.cs
- ClientScriptManager.cs
- DiagnosticTrace.cs
- TypeSystemProvider.cs
- HeaderCollection.cs
- Gdiplus.cs
- MulticastNotSupportedException.cs
- ReflectionServiceProvider.cs
- XmlSchemaAnyAttribute.cs
- DynamicResourceExtension.cs
- ResourceKey.cs
- XmlExtensionFunction.cs
- DataFormat.cs
- PkcsMisc.cs
- BooleanKeyFrameCollection.cs
- NullableLongSumAggregationOperator.cs
- ColumnResizeAdorner.cs
- BitmapPalettes.cs
- IISUnsafeMethods.cs
- DetailsViewDeletedEventArgs.cs
- _StreamFramer.cs
- EventLogPermissionEntry.cs
- DodSequenceMerge.cs
- MouseEvent.cs
- CompilerHelpers.cs
- X509CertificateCollection.cs
- codemethodreferenceexpression.cs
- WebServiceTypeData.cs
- ExceptionRoutedEventArgs.cs
- PaintEvent.cs
- DesignerOptionService.cs
- XsdBuildProvider.cs
- ExpressionValueEditor.cs
- HtmlMobileTextWriter.cs
- Utility.cs
- XmlIncludeAttribute.cs
- WebPartDescription.cs
- JsonStringDataContract.cs
- LayoutInformation.cs
- SecuritySessionFilter.cs
- DataGridViewRowCancelEventArgs.cs
- ThreadStateException.cs
- CompositeFontParser.cs
- coordinatorscratchpad.cs
- SharedHttpsTransportManager.cs
- OracleDataReader.cs
- ChangePassword.cs
- RSACryptoServiceProvider.cs
- DockingAttribute.cs
- DbConnectionOptions.cs
- CodeTypeReferenceCollection.cs
- CssStyleCollection.cs
- SecurityPermission.cs
- dbdatarecord.cs
- ValueQuery.cs
- TraceContextEventArgs.cs
- LoginViewDesigner.cs
- CopyAttributesAction.cs
- WorkflowQueue.cs
- RIPEMD160.cs
- FixedDocument.cs
- HwndAppCommandInputProvider.cs
- VirtualPath.cs
- LightweightCodeGenerator.cs
- BinHexDecoder.cs
- DateTimeFormatInfoScanner.cs
- DataServiceQueryException.cs
- ItemCollection.cs
- OpenFileDialog.cs
- XmlSchemaType.cs
- AddToCollection.cs
- MemberPathMap.cs
- AppDomainFactory.cs
- DefaultSettingsSection.cs
- BrowserInteropHelper.cs
- Encoder.cs
- MergeEnumerator.cs
- DependencyObject.cs
- DesignerActionKeyboardBehavior.cs
- TreeNodeCollection.cs
- SQLGuidStorage.cs
- TableLayout.cs
- DataReaderContainer.cs
- Set.cs
- SqlCacheDependency.cs
- DataBinding.cs
- TemplateField.cs
- QueryOperator.cs
- WinFormsComponentEditor.cs
- WorkflowOperationContext.cs
- LineServices.cs
- SplineKeyFrames.cs
- SessionStateContainer.cs
- Lasso.cs
- DataControlFieldHeaderCell.cs
- ExpressionList.cs
- MatrixUtil.cs
- ContentFileHelper.cs
- FilterException.cs
- TdsParserStaticMethods.cs