代码之家  ›  专栏  ›  技术社区  ›  TheSean

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

  •  1
  • TheSean  · 技术社区  · 15 年前

    [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;
    // ...
    }
    
    1 回复  |  直到 13 年前
        1
  •  7
  •   Ladislav Mrnka    15 年前

    不,这是不对的。ServiceKnownType(或数据协定上的KnownTypeAttribute)仅适用于服务使用的类型,但未在操作定义中指定。在您的例子中,您已经定义了使用MyObject类的LoadMyObjects操作。因为操作直接使用MyObject,所以不必将MyObject添加为ServicKnownType。但是,如果定义从MyObject派生的MyObject2,则在将MyObject2声明为ServiceKnownType之前,无法从LoadMyObjects操作发送该对象。

    推荐文章