Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 扩展Atom10FeedFormatter_C#_Asp.net - Fatal编程技术网

C# 扩展Atom10FeedFormatter

C# 扩展Atom10FeedFormatter,c#,asp.net,C#,Asp.net,我正在创建一个基于Atom 1.0规范的XML文件。NETSyndication类非常适合生成文档的Atom元素,但我需要扩展这个类,以便使用强类型C#类创建我自己的元素,如下所示。为了得到我想要的结果,扩展这些类的最佳方法是什么 <myNS: userdata myNS:field=”first_name” >Fred Bloggs</myNS:userdata> 弗雷德·布洛格斯 我试图通过分别从SyndicationFeed和SyndicationItem继承来

我正在创建一个基于Atom 1.0规范的XML文件。NETSyndication类非常适合生成文档的Atom元素,但我需要扩展这个类,以便使用强类型C#类创建我自己的元素,如下所示。为了得到我想要的结果,扩展这些类的最佳方法是什么

<myNS: userdata myNS:field=”first_name” >Fred Bloggs</myNS:userdata>
弗雷德·布洛格斯 我试图通过分别从SyndicationFeed和SyndicationItem继承来创建自己的提要和项,但这意味着我必须创建自己的feedFormatter类,因为Atom10FeedFormatter类仅将SyndicationItems作为参数。我想我必须创建以下类来获得我想要的结果,但我想把它放到社区中,看看这是否是正确的方法,如果其他人也做过类似的事情

MyFeedFormatter:Atom10 FeedFormatter

MyFeed:SyndicationFeed


MyItem:SyndicationItem

该.NET联合提要支持扩展。这可以通过
SyndicationFeed.ElementExtensions
SyndicationFeed.AttributeExtensions
实现


我开始是这样做的,但我需要一种方法,甚至创建了一些扩展方法,但我需要确保整个文档创建过程的类型安全

因此,我将元素创建为对象(见下文),这些对象的公共属性与属性相同。通过使用扩展,如果字段拼写不正确等,因此没有有效的XML文档,我会让它出错

        myItem.userdata = new UserDataElement
                            {
                                Field = “first_name”,
                                Content = "Fred Bloggs"
                            };

我还将此示例用作代码的基础。但是,当您尝试创建元素列表,并且希望格式化程序在列表中循环并写出元素时,它就会失败。因为Atom10FeedFormatter对它们一无所知,所以它忽略了它们。Atom10FeedFormatter atomFormatter=新的Atom10FeedFormatter(myFeed);atomFormatter.WriteTo(atomWriter);atomWriter.Close();