Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 序列化不';I don’我不接受我的赞扬,为什么?_C#_.net_Wcf_Serialization - Fatal编程技术网

C# 序列化不';I don’我不接受我的赞扬,为什么?

C# 序列化不';I don’我不接受我的赞扬,为什么?,c#,.net,wcf,serialization,C#,.net,Wcf,Serialization,我遇到了一个序列化问题。我的Silverlight应用程序不希望businessobject中有我的属性,也不知道该怎么办。之前,我通过设置KnownTypeAttribute解决了这个问题,如下面的示例所示,但在本例中,它不起作用 我曾经这样解决它: [DataContract(Name = "baseClass")] public class baseClass { } [DataContract(Name = "busObj1")] public class busObj1 : base

我遇到了一个序列化问题。我的Silverlight应用程序不希望businessobject中有我的属性,也不知道该怎么办。之前,我通过设置KnownTypeAttribute解决了这个问题,如下面的示例所示,但在本例中,它不起作用

我曾经这样解决它:

[DataContract(Name = "baseClass")]
public class baseClass { }

[DataContract(Name = "busObj1")]
public class busObj1 : baseClass { }

[DataContract(Name = "busObj2")]
[KnownType(typeof(busObj1))]
public class busObj2 : baseClass
{
    public busObj1 myObj { get; set; }
}
[DataContract(Name = "baseClass")]
public class baseClass { }

[DataContract(Name = "busObj1")]
public class busObj1 : baseClass { }

[DataContract(Name = "busObj2")]
[KnownType(typeof(busObj1))]
public class busObj2 : baseClass
{
    public busObj1 myObj { get; set; }
}

// This is the class that I want to send via WCF and that cannot be serialized
// because the serializer doesn't expect busObj1.
[DataContract(Name = "busObj3")]
public class busObj3 : busObj2 { }
我所知道的唯一区别是我的结构略有不同,如下所示:

[DataContract(Name = "baseClass")]
public class baseClass { }

[DataContract(Name = "busObj1")]
public class busObj1 : baseClass { }

[DataContract(Name = "busObj2")]
[KnownType(typeof(busObj1))]
public class busObj2 : baseClass
{
    public busObj1 myObj { get; set; }
}
[DataContract(Name = "baseClass")]
public class baseClass { }

[DataContract(Name = "busObj1")]
public class busObj1 : baseClass { }

[DataContract(Name = "busObj2")]
[KnownType(typeof(busObj1))]
public class busObj2 : baseClass
{
    public busObj1 myObj { get; set; }
}

// This is the class that I want to send via WCF and that cannot be serialized
// because the serializer doesn't expect busObj1.
[DataContract(Name = "busObj3")]
public class busObj3 : busObj2 { }
我非常感谢任何可能出错的想法


关于,Clas

您需要将已知类型属性放在基本对象上:

[DataContract(Name = "baseClass")]
[KnownType(typeof(busObj1))]
[KnownType(typeof(busObj2))]
[KnownType(typeof(busObj3))]
[KnownType(typeof(busObj4))]
public class baseClass { }

[DataContract(Name = "busObj1")]
public class busObj1 : baseClass { }

[DataContract(Name = "busObj2")]
public class busObj2 : baseClass { }

[DataContract(Name = "busObj3")]
public class busObj3 : busObj1
{
    public busObj2 myObj { get; set; }
}

[DataContract(Name = "busObj4")]
public class busObj4 : busObj3 { }

或者,如果您不想用这些属性污染域模型,您也可以。

您需要将已知类型属性放在基本对象上:

[DataContract(Name = "baseClass")]
[KnownType(typeof(busObj1))]
[KnownType(typeof(busObj2))]
[KnownType(typeof(busObj3))]
[KnownType(typeof(busObj4))]
public class baseClass { }

[DataContract(Name = "busObj1")]
public class busObj1 : baseClass { }

[DataContract(Name = "busObj2")]
public class busObj2 : baseClass { }

[DataContract(Name = "busObj3")]
public class busObj3 : busObj1
{
    public busObj2 myObj { get; set; }
}

[DataContract(Name = "busObj4")]
public class busObj4 : busObj3 { }

或者,如果您不想用这些属性污染您的域模型,您也可以。

我以前不需要它。为什么在这种情况下?我不知道为什么你以前不需要它。你还没有展示你的服务合同是什么样子的,客户可以看到什么类型的服务合同。你的解决方案帮了我的忙,尽管对我来说仍然是个谜,为什么有些解决方案有时有效,有时无效。无论如何谢谢你!我以前不需要它。为什么在这种情况下?我不知道为什么你以前不需要它。你还没有展示你的服务合同是什么样子的,客户可以看到什么类型的服务合同。你的解决方案帮了我的忙,尽管对我来说仍然是个谜,为什么有些解决方案有时有效,有时无效。无论如何谢谢你!