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
- Encoder.cs
- Model3DGroup.cs
- SuppressMergeCheckAttribute.cs
- VisualBrush.cs
- OdbcFactory.cs
- ClientSettings.cs
- XmlBoundElement.cs
- SecUtil.cs
- DataGridRowHeaderAutomationPeer.cs
- KerberosTicketHashIdentifierClause.cs
- Bidi.cs
- MinimizableAttributeTypeConverter.cs
- Emitter.cs
- ClientTarget.cs
- DbConvert.cs
- DataGridViewCellConverter.cs
- errorpatternmatcher.cs
- OdbcRowUpdatingEvent.cs
- InternalUserCancelledException.cs
- PointIndependentAnimationStorage.cs
- XmlCharType.cs
- HtmlHead.cs
- GenericTextProperties.cs
- EntityDataSourceWrapperCollection.cs
- ChildTable.cs
- DbConnectionOptions.cs
- HandleExceptionArgs.cs
- Geometry3D.cs
- CacheOutputQuery.cs
- Style.cs
- UxThemeWrapper.cs
- ObjectDataSource.cs
- HtmlMeta.cs
- TextServicesCompartmentContext.cs
- IODescriptionAttribute.cs
- FileDialog_Vista_Interop.cs
- OutOfMemoryException.cs
- InheritanceRules.cs
- TextChange.cs
- DynamicValidator.cs
- MyContact.cs
- OleDbPropertySetGuid.cs
- Privilege.cs
- MailMessageEventArgs.cs
- ellipse.cs
- FilterElement.cs
- TraceSection.cs
- RIPEMD160Managed.cs
- AssemblyCollection.cs
- HashCryptoHandle.cs
- PersonalizationStateQuery.cs
- UrlPath.cs
- StorageMappingFragment.cs
- MouseCaptureWithinProperty.cs
- WindowsClaimSet.cs
- ValidatorCollection.cs
- PersistChildrenAttribute.cs
- Not.cs
- ComplexLine.cs
- AppDomainManager.cs
- PopupRootAutomationPeer.cs
- SelectionPatternIdentifiers.cs
- Rect3DConverter.cs
- XmlAnyElementAttributes.cs
- TextServicesProperty.cs
- Int16Animation.cs
- AutomationElement.cs
- _Rfc2616CacheValidators.cs
- Enlistment.cs
- XmlSchemaRedefine.cs
- ErrorsHelper.cs
- ResolveNameEventArgs.cs
- HtmlLabelAdapter.cs
- TextServicesCompartment.cs
- AutomationPatternInfo.cs
- TimelineClockCollection.cs
- XmlSchemaAnnotation.cs
- DataGridRowsPresenter.cs
- OdbcTransaction.cs
- PanelDesigner.cs
- ObjectSet.cs
- ToolStripContextMenu.cs
- DesignerWithHeader.cs
- SoapFault.cs
- Int32Animation.cs
- PopupRootAutomationPeer.cs
- SemaphoreSecurity.cs
- Expression.DebuggerProxy.cs
- DocumentXmlWriter.cs
- RightsManagementInformation.cs
- XmlAggregates.cs
- FlowDocumentFormatter.cs
- ResourcesBuildProvider.cs
- TabControl.cs
- RsaSecurityTokenAuthenticator.cs
- DbConnectionPool.cs
- DoubleCollectionConverter.cs
- DataSvcMapFileSerializer.cs
- CatalogZoneAutoFormat.cs
- StrokeFIndices.cs