Можете ли вы создать DataContract с одним значением на основе ValueType? - PullRequest
4 голосов
/ 10 марта 2012

Мне интересно, можно ли создать DataContract, который будет сериализоваться так:

<MyCustomName>string value</MyCustomName>

OR

<MyCustomName>int</MyCustomName>

В конечном итоге я пытаюсь вернуть базовый тип с именем элемента Custom. Я пробовал следующее:

[DataContract(Name = "MyCustomName")]
public class MyCustomName : String
{
}

Но очевидно, что вы не можете наследовать строковое или int значение. Любая помощь будет оценена.

Ответы [ 2 ]

2 голосов
/ 10 марта 2012

Я не уверен, что есть более простой способ, но насколько я знаю, DataContractSerializer будет уважать его, если ваш тип реализует IXmlSerializable . Таким образом, вы можете реализовать этот интерфейс и создать собственную сериализацию MyCustomName

0 голосов
/ 18 сентября 2013

Если вы возвращаете этот тип как поле в другом классе, вы можете просто использовать суррогатное свойство, например:

public TreeId Id { get; set; }

[DataMember(Name = "Id")]
private string IdSurrogate
{
    get
    {
        return Id.ToString();
    }
    set
    {
        Id = new TreeId(value);
    }
}

Таким образом, вместо того, чтобы помещать DataContract в класс TreeId, свойство IdSurrogate просто обрабатывает его преобразование непосредственно в строковое значение

...