У меня есть служба WCF, использующая basicHttpBinding.В методе службы у меня есть класс, который возвращается, для этого класса мне нужно динамически / программно исключить свойства и изменить имена свойств для XML.Это необходимо сделать как в WSDL, так и при вызове метода обслуживания.
Я искал лучшее решение, и, похоже, мне потребуется (1) использовать XmlAttributeOverrides с XmlSerializer или (2) реализовать IXmlSerializable для класса, который необходимо настроить.Или может быть лучшее решение в целом.Я знаю, что Имя свойства + «Указано» можно добавить в класс, а затем эти свойства можно исключить.Однако это не исключается в WSDL и не решает проблему переименования свойств.
Зачем мне это нужно?Из-за глобализации и настройки нашего приложения.Есть много свойств, встроенных в наше приложение, которые могут быть переименованы или полностью скрыты от пользователей приложения.
После МНОГО исследования я лучше всего заменю сериализатор WCF на свой собственный сериализатор.Однако я никогда не нашел хороших примеров того, как это сделать для пользовательского класса, который использовал бы XmlSerializer.Кроме того, я не уверен, как передать XmlAttributeOverrides для определенного класса.
Кроме того, это может не относиться к тем, кто хочет такую же функциональность, но в моем приложении мне нужно только инициализировать значенияодин раз за всю жизнь приложения.Жаль, что C # не позволяет использовать статические переменные только для чтения с атрибутами.
Вот простой пример класса:
public Customer
{
public string Address1
{
get;
set;
}
public string Address2
{
get;
set;
}
public string Zipcode
{
get;
set;
}
}
В этом примере я хотел бы использовать для некоторых установокприложения используйте почтовый индекс вместо почтового индекса и скрывайте свойство Address2.
Ваша помощь очень ценится.
Спасибо, Тайлер