1
我遇到了序列化问题。我的Silverlight应用程序不会期望我的某个商业对象中的某个属性,也不知道该如何处理它。以前我已经通过设置一个KnownTypeAttribute来解决这个问题,就像下面的例子一样,但是在这种情况下它不起作用。序列化不接受我的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 { }
我的任何想法非常感谢什么可能是错的!
问候,柯乐
我以前并不需要它。为什么在这种情况下? – Clas
我不知道为什么你以前不需要它。您尚未显示您的服务合约的外观以及客户可见的类型。 –
您的解决方案为我做了窍门,尽管对于某些解决方案有时甚至有时不工作仍然很神秘。不管怎么说,还是要谢谢你! – Clas