为什么WCF中的DataMember不能返回Type?

AKo*_*ran 11 wcf

试图让这个工作,没有运气:

[DataMember]
public Type ParameterType { get; set;}
Run Code Online (Sandbox Code Playgroud)

Joh*_*ers 16

一般而言,Web服务是跨平台的.Java程序使用.NET的System.Type做什么?

此外,您希望序列化哪个类型的类型,以及您希望如何反序列化?

  • 这是不正确的.Web服务的本质允许将可序列化对象转换为适当的格式:http://msdn.microsoft.com/en-us/library/cc656732.aspx; 仅仅因为它是"类型"并没有使它变得特别.问题是运行时对象实际上是一个内部类型,无法连接:http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/521852e0-d437-4def-848a- ead182a06276.Java可以使用来自.NET的XML表示来做任何想做的事情. (4认同)
  • 不,这是直接的答案.由于Web服务的性质,您无法返回Type.请注意,提问者显然觉得它不仅试图回答它,而是它_did_回答. (2认同)
  • 我们在论证Web服务的性质与其实现之间的区别.是的,一个实现可以序列化System.Type(及其架构,请记住),让Java只是扼杀它.Type的当前实现实际上不允许序列化.如果这是一个流行的用例,它会有多快变化? (2认同)

Mar*_*iep 10

返回的任何字段或属性System.Type都不能使用WCF进行序列化,因为在运行时,对象的实际类型System.RuntimeType被标记为内部,因此无法自动序列化DataContractSerializer,只能序列化可公开访问的类型.

但是,您可以编写一个IXmlSerializer包装器System.Type,它将提取您要传输的信息.