繁体   English   中英

为什么我的对象不需要ServiceKnownType?

[英]Why is ServiceKnownType not needed for my object?

据我了解,在WCF ServiceContract中使用的每种类型(除了某些诸如int和string之类的原语之外)都需要使用ServiceKnownType属性进行声明。 但是,我已经构建了一个自定义对象,并且即使没有为它添加ServiceKnownType,它也可以毫无问题地在我的WCF服务中传输。 有人能解释一下为什么行吗?

[ServiceContract(CallbackContract = typeof(IMyServiceCallback))]
public interface IMyService
{
    [OperationContract]
    List<MyObject> LoadMyObjects();
}

[DataContract]
public class MyObject
{
    [DataMember]
    private int batchID;
    [DataMember]
    private int fileID;
    [DataMember]
    private string fileName;
    [DataMember]
    private DateTime importStartTime;
// ...
}

不,这是不正确的。 ServiceKnownType(或数据协定上的KnownTypeAttribute)仅对于服务使用的类型才需要,但在操作定义中未指定。 在您的情况下,您已定义了使用MyObject类的LoadMyObjects操作。 因为该操作直接使用MyObject,所以不必将MyObject添加为ServicKnownType。 但是,如果您定义派生自MyObject的MyObject2,则除非将MyObject2声明为ServiceKnownType,否则将无法通过LoadMyObjects操作发送该对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM