gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:59 25 4
gpt4 key购买 nike

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

[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,您将无法从 LoadMyObjects 操作发送该对象,直到您将 MyObject2 声明为 ServiceKnownType。

关于c# - 为什么我的对象不需要 ServiceKnownType?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3522515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com