Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Syndication / Atom10ItemFormatter.cs / 1 / Atom10ItemFormatter.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Syndication { using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Globalization; using System.Text; using System.Xml; using System.Xml.Serialization; using System.Diagnostics.CodeAnalysis; using System.Xml.Schema; [XmlRoot(ElementName = Atom10Constants.EntryTag, Namespace = Atom10Constants.Atom10Namespace)] public class Atom10ItemFormatter : SyndicationItemFormatter, IXmlSerializable { Atom10FeedFormatter feedSerializer; Type itemType; bool preserveAttributeExtensions; bool preserveElementExtensions; public Atom10ItemFormatter() : this(typeof(SyndicationItem)) { } public Atom10ItemFormatter(Type itemTypeToCreate) : base() { if (itemTypeToCreate == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("itemTypeToCreate"); } if (!typeof(SyndicationItem).IsAssignableFrom(itemTypeToCreate)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("itemTypeToCreate", SR2.GetString(SR2.InvalidObjectTypePassed, "itemTypeToCreate", "SyndicationItem")); } this.feedSerializer = new Atom10FeedFormatter(); this.feedSerializer.PreserveAttributeExtensions = this.preserveAttributeExtensions = true; this.feedSerializer.PreserveElementExtensions = this.preserveElementExtensions = true; this.itemType = itemTypeToCreate; } public Atom10ItemFormatter(SyndicationItem itemToWrite) : base(itemToWrite) { // No need to check that the parameter passed is valid - it is checked by the c'tor of the base class this.feedSerializer = new Atom10FeedFormatter(); this.feedSerializer.PreserveAttributeExtensions = this.preserveAttributeExtensions = true; this.feedSerializer.PreserveElementExtensions = this.preserveElementExtensions = true; this.itemType = itemToWrite.GetType(); } public bool PreserveAttributeExtensions { get { return this.preserveAttributeExtensions; } set { this.preserveAttributeExtensions = value; this.feedSerializer.PreserveAttributeExtensions = value; } } public bool PreserveElementExtensions { get { return this.preserveElementExtensions; } set { this.preserveElementExtensions = value; this.feedSerializer.PreserveElementExtensions = value; } } public override string Version { get { return SyndicationVersions.Atom10; } } protected Type ItemType { get { return this.itemType; } } public override bool CanRead(XmlReader reader) { if (reader == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("reader"); } return reader.IsStartElement(Atom10Constants.EntryTag, Atom10Constants.Atom10Namespace); } [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes", Justification = "The IXmlSerializable implementation is only for exposing under WCF DataContractSerializer. The funcionality is exposed to derived class through the ReadFrom\\WriteTo methods")] XmlSchema IXmlSerializable.GetSchema() { return null; } [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes", Justification = "The IXmlSerializable implementation is only for exposing under WCF DataContractSerializer. The funcionality is exposed to derived class through the ReadFrom\\WriteTo methods")] void IXmlSerializable.ReadXml(XmlReader reader) { if (reader == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("reader"); } SyndicationFeedFormatter.TraceItemReadBegin(); ReadItem(reader); SyndicationFeedFormatter.TraceItemReadEnd(); } [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes", Justification = "The IXmlSerializable implementation is only for exposing under WCF DataContractSerializer. The funcionality is exposed to derived class through the ReadFrom\\WriteTo methods")] void IXmlSerializable.WriteXml(XmlWriter writer) { if (writer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("writer"); } SyndicationFeedFormatter.TraceItemWriteBegin(); WriteItem(writer); SyndicationFeedFormatter.TraceItemWriteEnd(); } public override void ReadFrom(XmlReader reader) { SyndicationFeedFormatter.TraceItemReadBegin(); if (!CanRead(reader)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR2.GetString(SR2.UnknownItemXml, reader.LocalName, reader.NamespaceURI))); } ReadItem(reader); SyndicationFeedFormatter.TraceItemReadEnd(); } public override void WriteTo(XmlWriter writer) { if (writer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("writer"); } SyndicationFeedFormatter.TraceItemWriteBegin(); writer.WriteStartElement(Atom10Constants.EntryTag, Atom10Constants.Atom10Namespace); WriteItem(writer); writer.WriteEndElement(); SyndicationFeedFormatter.TraceItemWriteEnd(); } protected override SyndicationItem CreateItemInstance() { return SyndicationItemFormatter.CreateItemInstance(this.itemType); } void ReadItem(XmlReader reader) { SetItem(CreateItemInstance()); feedSerializer.ReadItemFrom(XmlDictionaryReader.CreateDictionaryReader(reader), this.Item); } void WriteItem(XmlWriter writer) { if (this.Item == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR2.GetString(SR2.ItemFormatterDoesNotHaveItem))); } XmlDictionaryWriter w = XmlDictionaryWriter.CreateDictionaryWriter(writer); feedSerializer.WriteItemContents(w, this.Item); } } [XmlRoot(ElementName = Atom10Constants.EntryTag, Namespace = Atom10Constants.Atom10Namespace)] public class Atom10ItemFormatter: Atom10ItemFormatter where TSyndicationItem : SyndicationItem, new () { // constructors public Atom10ItemFormatter() : base(typeof(TSyndicationItem)) { } public Atom10ItemFormatter(TSyndicationItem itemToWrite) : base(itemToWrite) { } protected override SyndicationItem CreateItemInstance() { return new TSyndicationItem(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ReadOnlyObservableCollection.cs
- DbConnectionPoolGroup.cs
- TagPrefixCollection.cs
- WindowsEditBox.cs
- GeneratedCodeAttribute.cs
- SQLUtility.cs
- TrackingRecordPreFilter.cs
- EntityDataSourceUtil.cs
- LeaseManager.cs
- TextServicesLoader.cs
- CanonicalizationDriver.cs
- SmiTypedGetterSetter.cs
- Throw.cs
- HtmlTableCell.cs
- ContainerAction.cs
- RbTree.cs
- CatalogZone.cs
- DelayedRegex.cs
- ComboBox.cs
- SyndicationDeserializer.cs
- UnsafeNativeMethods.cs
- SecurityContextSecurityTokenParameters.cs
- RepeaterItemCollection.cs
- TemplateInstanceAttribute.cs
- MaskInputRejectedEventArgs.cs
- TextElementEnumerator.cs
- HtmlTableRow.cs
- ComEventsHelper.cs
- ResponseStream.cs
- SoapFault.cs
- HashCodeCombiner.cs
- _AutoWebProxyScriptEngine.cs
- XmlCustomFormatter.cs
- Grant.cs
- entityreference_tresulttype.cs
- ReflectionServiceProvider.cs
- DBDataPermission.cs
- RuntimeResourceSet.cs
- PassportAuthenticationModule.cs
- SerializationEventsCache.cs
- CodeCommentStatementCollection.cs
- HTMLTextWriter.cs
- CodeChecksumPragma.cs
- ToolStripDesignerAvailabilityAttribute.cs
- NavigationPropertyEmitter.cs
- Control.cs
- CurrencyManager.cs
- SmtpFailedRecipientException.cs
- ReliableChannelBinder.cs
- ToolStripRenderEventArgs.cs
- FontInfo.cs
- ScrollableControl.cs
- ExtensionDataReader.cs
- TypeElementCollection.cs
- VersionedStreamOwner.cs
- TemplateControlParser.cs
- DataKeyArray.cs
- GridViewRowCollection.cs
- DateTimeStorage.cs
- RecordsAffectedEventArgs.cs
- TreeViewCancelEvent.cs
- DataGridCaption.cs
- AttributeCollection.cs
- AutomationFocusChangedEventArgs.cs
- FixedTextBuilder.cs
- FileChangesMonitor.cs
- RunClient.cs
- DelegateTypeInfo.cs
- KeyedHashAlgorithm.cs
- ExpressionBuilderContext.cs
- AppSettingsExpressionBuilder.cs
- CodeTryCatchFinallyStatement.cs
- SecurityTokenReferenceStyle.cs
- Cursor.cs
- PropertyIDSet.cs
- PrintControllerWithStatusDialog.cs
- Aggregates.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- CallbackHandler.cs
- DefaultTextStoreTextComposition.cs
- TableLayout.cs
- SiteMapPath.cs
- HostedAspNetEnvironment.cs
- D3DImage.cs
- NativeCompoundFileAPIs.cs
- EndpointAddressMessageFilterTable.cs
- SelectionPattern.cs
- ErrorFormatter.cs
- ClientRoleProvider.cs
- RegisteredArrayDeclaration.cs
- FormsAuthenticationTicket.cs
- TimeoutException.cs
- VariableQuery.cs
- DelegateSerializationHolder.cs
- SwitchAttribute.cs
- PrimitiveXmlSerializers.cs
- InlineCategoriesDocument.cs
- StylusCollection.cs
- UnsafeNativeMethods.cs
- TextDpi.cs