为什么我的对象不需要ServiceNonningType?
-
29-09-2019 - |
题
我的理解是,在WCF ServiceCntract中使用的每种类型(例如INT和String)都需要使用ServiceKnownnoytype属性来声明。但是,我已经构建了一个自定义对象,并且它可以毫无问题地传输我的WCF服务 - 即使我没有为此添加ServiceSnowntytype。有人请解释一下为什么有效吗?
[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;
// ...
}
解决方案
不,这是不正确的。 ServiceNonningType(或数据合同上的知名人士)仅对于服务使用的类型需要,但在操作定义中未指定。在您的情况下,您已经定义了使用MyObject类的LoadMyObjects操作。由于操作直接使用MyObject,因此您不必将MyObject添加为ServickNownType。但是,如果定义从MyObject派生的MyObject2,则将无法从LoadMyObjects操作发送该对象,直到将MyObject2声明为ServiceNownnowntype。
不隶属于 StackOverflow