相关疑难解决方法(0)

在C#中,如何将XML从较旧的对象反序列化为更新的对象并忽略缺少的xml元素?

我有一个自定义设置文件,我使用一个序列化/反序列化XmlSerializer.我的对象定义中没有定义架构且没有序列化标签,只是直接对象序列化(尽管如果需要我会添加它们).

我的问题是我需要向对象添加数据成员.如果我这样做,我知道旧的设置文件不会反序列化.

有没有办法为添加的成员指定默认值,或者如果XML中缺少这些默认值,可以采用一些简单的方法来忽略它们?

c# xml-serialization defaults

14
推荐指数
2
解决办法
1万
查看次数

WCF服务默认值

我有我的WCF服务的以下数据合同类:

[DataContract(Name = "MyClassDTO")]
public class MyClass
{
    private string name = "Default Name";

    [DataMember]
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用Visual Studio的添加服务引用函数生成WCF服务引用时,生成的DataContract看起来像这样:

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name = "MyClassDTO", Namespace = "xxx")]
[System.SerializableAttribute()]
public partial class MyClassDTO : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
{

    [System.Runtime.Serialization.OptionalFieldAttribute()]
    private string NameField;

    [System.Runtime.Serialization.DataMemberAttribute()]
    public string Name
    {
        get
        {
            return this.NameField;
        }
        set
        {
            if ((object.ReferenceEquals(this.NameField, value) != true))
            {
                this.NameField = value;
                this.RaisePropertyChanged("Name");
            } …
Run Code Online (Sandbox Code Playgroud)

.net c# wcf visual-studio-2008

10
推荐指数
1
解决办法
8418
查看次数

二进制遗留环境中的WCF

我们正在编写C#客户端,它应该连接到旧的旧服务器.为了在将来可扩展,我们希望利用WCF框架.

旧的遗留协议是专有协议和二进制协议.要集成到WCF,我们希望将通常的XML序列化器替换为我们专有的二进制格式marshaller.请注意,我们不希望将XML封装到其他传输协议中,而是将XML序列化器完全替换为无关.想想WCF与CORBA(但不是真正的CORBA)交谈,它不了解任何HTTP/SOAP/MTOM/...

有人能指出我们如何做到这一点的例子

.net wcf xml-serialization wcf-binding

5
推荐指数
1
解决办法
153
查看次数