第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

將模型導(dǎo)出到?jīng)]有列名或標(biāo)題(僅值)的文本文件

將模型導(dǎo)出到?jīng)]有列名或標(biāo)題(僅值)的文本文件

C#
慕田峪4524236 2022-11-21 22:02:13
我有一個(gè) DTO(數(shù)據(jù)傳輸對(duì)象)對(duì)象作為模型,其中包含來(lái)自收到的響應(yīng)的數(shù)據(jù)。我只需要將標(biāo)題/列下的值導(dǎo)出到文本文件。不需要導(dǎo)出列名或標(biāo)題。我能夠在 的幫助下以 XML 格式導(dǎo)出數(shù)據(jù)XmlSerializer。但無(wú)法找到任何文本序列化程序。我的模型如下:public class ResponseGradeDto    {        [XmlIgnore]        [XmlElement(ElementName = "GRADEID")]        public Guid Id { get; set; }        [XmlElement(ElementName = "GRADENAME")]        public string Name { get; set; }        [XmlElement(ElementName = "GRADECODE")]        public string Code { get; set; }        public List<GradeQualitySpecDto> QualitySpecItem { get; set; }}我試過(guò)下面的代碼:System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(responseGradeDto.GetType());            using (StringWriter textWriter = new StringWriter())            {                xmlSerializer.Serialize(textWriter, responseGradeDto);                string a = textWriter.ToString();                return textWriter.ToString();            }假設(shè)我的模型如下:{        "name": "My Name",        "code": "1234",        "information": "My Info",        "gradeQualitySpecItem": [        {            "propertyid": "100",            "propertyname": "PropertyName1",            "target": 10,            "sigma": 20        },        {            "propertyid": "200",            "propertyname": "PropertyName2",            "target": 10,            "sigma": 30        }]}我需要在文本文件中輸出如下:AL300 SAMPLE(Some hard coded text)My Name1234My InfoPROP-SUMMARY100PropertyName11020PROP-SUMMARY200PropertyName21030end AL300 SAMPLE(end of file)如果它是列表,我將得到低于列表的輸出。任何人都可以幫助我嗎?
查看完整描述

1 回答

?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊

沒(méi)有內(nèi)置的“純文本”序列化程序?qū)?duì)象屬性值序列化為行分隔文本。大多數(shù)時(shí)候,當(dāng)您想要將對(duì)象保存為文本時(shí),您只需編寫(xiě)代碼即可。


例子:


var x = new ResponseGradeDto{ 

        Id = Guid.NewGuid(), 

        Name = "Foo",

        Code = "Cde",

        Information = "No info"

};


using (var writer = new StreamWriter(@"C:\temp\log.txt"))

{

    writer.WriteLine(x.Name);

    writer.WriteLine(x.Code);

    writer.WriteLine(x.Information);

}

然而,更通用的方法是使用反射來(lái)獲取對(duì)象的所有引用屬性:


var properties = typeof(ResponseGradeDto).GetProperties();

然后將屬性轉(zhuǎn)儲(chǔ)到文件中就很簡(jiǎn)單了(注意我使用了x上面代碼中定義的對(duì)象):


File.WriteAllLines(@"C:\temp\attr.txt", properties.Select(p => p.GetValue(x).ToString()));

如果您愿意,可以使用帶有上述反射解決方案的屬性來(lái)過(guò)濾掉想要的/不需要的屬性。在這里,我重用了您在示例中使用的“Xml 屬性”,您可以編寫(xiě)自己的屬性:


var properties = typeof(ResponseGradeDto).GetProperties().Where(

                    prop => Attribute.IsDefined(prop, typeof(XmlElementAttribute))

                        && !Attribute.IsDefined(prop, typeof(XmlIgnoreAttribute))

            );

希望這可以幫助!


查看完整回答
反對(duì) 回復(fù) 2022-11-21
  • 1 回答
  • 0 關(guān)注
  • 131 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)