我在OperationContract中使用接口作为输入参数。但是,当我在客户端生成代理类。我无法访问实现ITransaction接口的接口或类的成员。我只是geeting是对象WCF接口作为参数
服务接口
[ServiceContract] public interface IServiceInterface { [OperationContract] string SyncDatabase(ITransaction TransactionObject); }
服务类
class SyncService:IServiceInterface { public string SyncDatabase(ITransaction TransactionObject) { return "Hello There!!"; } }
接口
public interface ITransaction { ExpenseData ExpData { get; set; } void Add(ITransaction transactionObject); }
数据合同
[DataContract] public class Transaction:ITransaction { [DataMember] public ExpenseData ExpData { get; set; } public void Add(ITransaction transactionObject) { } }
在上述情况下,我应该也复制在客户端
当我按照你的方法一切都很好。但我的第二部分问题仍然存在。当我创建服务的代理时,我没有在客户端上获得Transaction类。我该怎么做才能在客户端上得到这个课程。 – 2012-07-06 12:28:17
实际上[KnownType(typeof(Transaction))]'应该告诉WCF在WSDL中包含该类型,所以我不确定为什么这对你不起作用。您确定在更改后重新生成客户端吗? – CodingWithSpike 2012-07-06 13:05:09
从MSDN: '[AttributeUsageAttribute(AttributeTargets.Class | AttributeTargets.Struct,继承=真,=的AllowMultiple真)] 公共密封类KnownTypeAttribute:Attribute' ...这意味着该属性不能在接口上施加... 这与DataContractAttribute – 2013-08-05 09:29:39