我有一个WCF服务。
[ServiceContract(ConfigurationName="WebEntityService")]
[ServiceKnownType(typeof(WcfEntityService.TH.Category))]
public interface IEntityService {
[OperationContract(IsOneWay=true)]
void ScanEntity(ScanInfo scanInfo, WebEntityBase entity);
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class EntityService : IEntityService {
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void ScanEntity(ScanInfo scanInfo, WebEntityBase entity) {
try {
WebScanner webScanner = new WebScanner(entity);
webScanner.Scan(scanInfo);
}
catch (Exception) {
throw;
}
}
}
WcfEntityService.TH.Category类继承自WebEntityBase并放在不同的程序集中。该类具有对WCF服务的服务引用,并以递归方式调用ScanEntity。
问题是如下。 当WcfEntityService.TH.Category类调用ScanEntity时,我发生序列化错误。
不希望输入数据合约名称为“类别:http://schemas.datacontract.org/2004/07/WcfEntityService.TH”的“WcfEntityService.TH.Category”。考虑使用DataContractResolver或将任何静态未知的类型添加到已知类型列表中 - 例如,使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中。
有人能说有什么方法可以解决这个问题吗?