문제

예를 들어 내가 원한을 제거하거나 변경하려면 아래 속성 특성 또는 추가 새로운 하나입니다.이것이 가능합니까?

[XmlElement("bill_info")]
[XmlIgnore]
public BillInfo BillInfo
{
  get { return billInfo; }
  set { billInfo = value; }
}
도움이 되었습니까?

해결책

(편집-내 잘못이 원래 질문)

를 추가할 수 없습니다 실제 특성(그들은 불 IL);그러나, XmlSerializer 당신이 없을 제공할 수 있습니다 추가 특성에서 생성자 XmlSerializer.당신은,그러나,필요하심을 캐시 XmlSerializer 인스턴스를 만약 당신이며,그렇지 않으면 그것은 추가로 만들 어셈블리당 인스턴스는 비트를 즐겼습니다.(하지 않는 경우에는 이를 사용하여 간단한 생성자는 그냥 걸리 Type).보 XmlAttributeOverrides.

예를 들어:

using System;
using System.Xml.Serialization;
 public class Person
{
    static void Main()
    {
        XmlAttributeOverrides overrides = new XmlAttributeOverrides();
        XmlAttributes attribs = new XmlAttributes();
        attribs.XmlIgnore = false;
        attribs.XmlElements.Add(new XmlElementAttribute("personName"));
        overrides.Add(typeof(Person), "Name", attribs);

        XmlSerializer ser = new XmlSerializer(typeof(Person), overrides);
        Person person = new Person();
        person.Name = "Marc";
        ser.Serialize(Console.Out, person);
    }
    private string name;
    [XmlElement("name")]
    [XmlIgnore]
    public string Name { get { return name; } set { name = value; } }
}

참고 또한;는 경우 xml 특성 단지 설명한 다음,거기 두 번째 를 추가하는 방법에 대한 특성에 관련된 일을 데이터 바인딩을 사용하여, TypeDescriptor.CreatePropertyICustomTypeDescriptorTypeDescriptionProvider.보다 훨씬 더 복잡 xml 경우,난 두려워하고 작동하지 않는 모든 코드만 코드를 사용하는 구성 요소 모델이다.

다른 팁

그것은 가능하지 않은 추가/제거에서 속성 클래스에서 runtime.

그러나를 업데이트 방법 XML serialization 작품은 런타임에 필요없이 편집하는 특성이 있습니다.보 마크의 게시물입니다.

편집 업데이트

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top