我在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