WCF and Interfaces
本文关键字:Interfaces and WCF | 更新日期: 2023-09-27 18:03:01
可能重复:
在WCF服务中传递接口?
我有一个关于WCF和接口的问题。
我有两节课
public interface ICompany {
string Name { get; set; }
IAddress Address { get; set; }
}
class Company : ICompany {
public string Name { get; set; }
public IAddress Address { get; set; }
}
public interface IAddress {
string Road { get; set; }
}
class Address: IAddress {
string Road { get; set; }
}
我的服务返回
[OperationContract]
Company GetCompany(String name);
但这不起作用,我确信问题是Company类中的IAddress,但这难道不能以某种方式解决吗?
您的类必须声明为:
[DataContract]
class Company {
[DataMember]
public string Name { get; set; }
[DataMember]
public IAddress Address { get; set; }
}
并且您的服务声明并实现为:
[ServiceContract]
public interface ICompanyService
{
[OperationContract]
Company GetCompany(string name);
}
public class CompanyService : ICompanyService
{
public Company GetCompany(string name)
{
return new Company { Name = name};
}
}
只有在那之后你才能使用这项服务。我建议阅读更多
我认为您需要先用[DataContract]和[DataMemebr]标记需要由客户端使用的类,然后再标记。
您需要在想要序列化的类和方法上使用[DataContract]和[DataMemebr]属性。WCF将把响应序列化为XML(大部分时间(,因此编译器必须能够序列化对象。