Одним из простых решений может быть предоставление двух версий каждого свойства, зашифрованных и незашифрованных, и пометить все незашифрованные версии с помощью [XmlIgnore].
Если вы не можете редактировать автоматически сгенерированные классы,и вы хотите, чтобы эти свойства были зашифрованы, затем вы можете добавить незашифрованные свойства оболочки в частичном классе, например,
== в автоматически сгенерированном файле:
class MyClass {
String SensitiveProperty { get; set; }
}
==в неавтоматизированном частичном файле:
partial class MyClass {
[XmlIgnore]
String SensitivePropertyDecrypted {
get {
return CryptoHelper.Decrypt(SensitiveProperty);
}
set {
SensitiveProperty = CryptoHelper.Encrypt(value);
}
}
}
... где "CryptoHelper" - это класс, который вы написали для поддержки схемы шифрования, которую вы надеетесь достичь (т. е. с использованием симметричного ключавы прошли с использованием PKI).