所以,假设我有这样的事情:
public class Service : IService
{
public someExposedMethod (someClass param){
//do some stuff
}
}
[DataContract]
public class someClass{}
[DataContract]
public class someSubClass : someClass {}
Run Code Online (Sandbox Code Playgroud)
someClass是公开的,可以在客户端中实例化,但someSubClass永远不会被实例化,并且由于某种原因不会公开.暴露它的唯一方法似乎是将param的类型更改为someSubClass.这是荒唐的.我该怎么做呢?我不想要一个基于字符串或其他东西返回实例的方法,我希望客户端和开发人员完全了解他们可以实例化哪些类.
你没有暴露这些类中的任何一个.您的客户从不实例化它们(除非您分享类型,这是一个不同的故事).
您正在公开元数据.执行"添加服务引用"时,它使用该元数据创建一个类似于服务器端类的客户端类.它看起来很像它可以序列化和反序列化代表服务器端类的XML.
如果希望公开子类的元数据,则需要将该[KnownType]属性添加到每个子类的操作中:
[DataContract]
[KnownType(typeof(someSubClass))]
public class someClass{}
Run Code Online (Sandbox Code Playgroud)
请参阅已知类型.
| 归档时间: |
|
| 查看次数: |
2092 次 |
| 最近记录: |