할 수 있는 속성을 추가 개체 숙박 시설에 런타임은?
-
03-07-2019 - |
문제
예를 들어 내가 원한을 제거하거나 변경하려면 아래 속성 특성 또는 추가 새로운 하나입니다.이것이 가능합니까?
[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.CreateProperty
나 ICustomTypeDescriptor
나 TypeDescriptionProvider
.보다 훨씬 더 복잡 xml 경우,난 두려워하고 작동하지 않는 모든 코드만 코드를 사용하는 구성 요소 모델이다.
다른 팁
그것은 가능하지 않은 추가/제거에서 속성 클래스에서 runtime.
그러나를 업데이트 방법 XML serialization 작품은 런타임에 필요없이 편집하는 특성이 있습니다.보 마크의 게시물입니다.
편집 업데이트
제휴하지 않습니다 StackOverflow