如何在WCF中获得对继承对象属性的访问
本文关键字:对象 继承 属性 访问 WCF | 更新日期: 2023-09-27 18:05:54
情况是:
[ServiceContract]
public interface IInfo
{
[DataMember]
int Id{get;set;}
}
[DataContract]
[KnownType(typeof(Legal))]
public class Info
{
[DataMember]
public int Id { get; set; }
}
[DataContract]
public class Legal : Info
{
[DataMember]
public string ManagerName { get; set; }
}
[ServiceContract]
[ServiceKnownType(typeof(Legal))]
public interface IMyService
{
[OperationContract]
int DoWork(Info dto);
}
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyService : IMyService
{
public int DoWork(Info dto)
{
string name;
if (dto is Legal)
name = (dto as Legal).ManagerName;
return dto.Id;
}
}
是否有可能知道dto为合法类型并访问子属性?
我想存储dto,我不想为info的每个子元素提供很多服务。
传递泛型给服务不工作,wsdl错误,接口如IInfo作为输入参数不工作,类型转换错误,像Info这样的基类不起作用,子道具不可访问,堆栈溢出不工作,这是我第二次我张贴这个问题,但没有答案!
我正在传递一个json作为dto到MyService。如果我添加"__type":"Legal:#Dto", MyService会识别该Dto为合法的。然后(作为法律)。ManagerName有值
这个解决方案是有效的,实际上传递__type是不方便的方式。如果你有更好的建议,我将非常感谢。