我遇到了有关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);
但这不起作用,我确定问题是公司类中的IAddress,但不能以某种方式解决这个问题吗?
答案 0 :(得分:1)
您的课程必须声明为:
[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};
}
}
之后才能使用此服务。 我建议您阅读更多that
答案 1 :(得分:0)
我认为你需要在所有事情之前用[DataContract]和[DataMemebr]标记客户需要使用的类。
答案 2 :(得分:0)
您需要在要序列化的类和方法上使用[DataContract]和[DataMemebr]属性。 WCF将序列化对XML的响应(大多数情况下),因此编译器必须能够序列化对象。