我收到InvalidDataContractException:
Type' LicenseWatchingServiceLibrary.LicenseInfoContainerExpiring'无法序列化。考虑标记它[...]
但它已被标记(见代码)。我已经搜索过了,但我找到的解决方案都没有。此处使用WCF在Windows服务和ui应用程序之间进行通信。一些代码:
抛出异常的位,位于windows wcf服务应用程序中:
setMinimumSize
类库中的接口
private void Run()
{
//[...]
List<LicenseInfoContainerExpiring> expiringLicenses;
List<LicenseInfoContainerUntrusted> untrustedLicenses;
readLicenseInfoLists(out expiringLicenses, out untrustedLicenses, out warningNeeded);
if (warningNeeded)
{
LWSProxy.WatchLicenses(expiringLicenses, untrustedLicenses); //breaks here
}
}
LicenseInfoContainerExpiring.cs,也位于类库中:(所有这些,以防万一我忘了某些地方)
[ServiceContract]
public interface ILicenseWatchingServiceUXHost
{
[OperationContract]
void WatchLicenses(List<LicenseInfoContainerExpiring> elcs, List<LicenseInfoContainerUntrusted> ulcs);
}
答案 0 :(得分:1)
您拥有私人制定者的数据成员。然后,无法在反序列化时设置其值。让公司也公开。
请记住,数据协定实例化后甚至不会在反序列化时调用默认构造函数。
namespace LicenseWatchingServiceLibrary
{
[DataContract]
public partial class LicenseInfoContainerExpiring : ILicenseInfoContainer
{
#region precode
#region properties
[DataMember]
public string licenseName { get; set; }
[DataMember]
public DateTime licenseExpirationDate { get; set; }
// ...
}
}
答案 1 :(得分:0)
添加KnownType:
[DataContract]
[KnownType(typeof(GregorianCalendar))]
public partial class LicenseInfoContainerExpiring : ILicenseInfoContainer
{}