WCF和接口

时间:2011-07-22 09:04:47

标签: c# wcf interface

  

可能重复:
  Passing Interface in a WCF Service?

我遇到了有关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,但不能以某种方式解决这个问题吗?

3 个答案:

答案 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的响应(大多数情况下),因此编译器必须能够序列化对象。