【发布时间】:2014-03-25 16:22:56
【问题描述】:
我正在实现以下 WCF 服务
[ServiceContract]
[ServiceKnownType(typeof(Person))]
public interface IPersonService
{
[OperationContract]
IPerson GetPerson();
}
[AspNetCompatibilityRequirements(RequirementsMode =AspNetCompatibilityRequirementsMode.Allowed)]
public class PersonService : IPersonService
{
public IPerson GetPerson()
{
return new Person();
}
}
接口IPerson定义
public interface IPerson
{
string FirstName { get; set; }
string LastName { get; set; }
}
实现接口的类Person定义为
[DataContract]
public class Person : IPerson
{
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
}
问题是当我引用 PersonService 并调用 GetPerson 方法时,我得到的结果是类型对象而不是类型人。要获得 Person 类型,我必须进行显式转换。
static void Main(string[] args)
{
var proxy = new PersonServiceReference.PersonServiceClient();
PersonServiceReference.Person person = (PersonServiceReference.Person)proxy.GetPerson();
}
有什么方法可以让 GetPerson Web 方法返回 IPERSON 类型而不进行显式转换?
【问题讨论】:
标签: c# wcf interface serviceknowntype