Я хотел бы, чтобы все строки во входящих сообщениях WCF были обрезаны, чтобы мне не приходилось беспокоиться об их обрезке во всех моих операциях. Я могу сделать это с помощью IParameterInspector
и тонкой логики отражения, но, похоже, должен быть способ получше.
Я пытался использовать IDataContractSurrogate
, но GetDeserializedObject
не вызывается для десериализации строк.
Есть ли другой способ подключиться к DataContractSerializer, который позволил бы мне изменять строки без массивного отражения?
1 ответ
Вы можете сделать это, реализуя IXMLSerializable. Пройдите этот вопрос а>. Конечно, вам нужно реализовать операцию ReadXml.
Что мешает вам привести объект и обновить его при проверке параметра?
Если вы считаете, что служба используется конкретными потребителями .Net, вы можете создать клиент службы wcf, добавить к нему свою логику обрезки и распространить ее (чтобы потребители могли напрямую использовать клиента вместо создания прокси-сервера для вашей службы). Одним из побочных эффектов этого является то, что вы должны перераспределять клиентские dll всякий раз, когда в контракт вносятся изменения.
Похожие вопросы
Связанные вопросы
Новые вопросы
.net
НЕ используйте для вопросов о .NET Core - используйте вместо этого [.net-core]. .NET Framework - это программная среда, предназначенная главным образом для операционной системы Microsoft Windows. Он включает в себя реализацию библиотеки базовых классов, общеязыковой среды выполнения (обычно называемой CLR), общей системы типов (обычно называемой CTS) и динамической среды исполнения. Он поддерживает множество языков программирования, включая C #, VB.NET, F # и C ++ / CLI.