繁体   English   中英

WCF服务合同; 从客户端调用类方法

[英]WCF service contract; calling a class method from client

使用WCF服务时,我遇到了以下问题:从客户端(简单的控制台应用程序)调用服务,即使此方法已标记为[OperationContract, ](实际上,到目前为止,我已经尝试了所有可能的属性组合:D)。 有办法解决吗? 我想这里缺少一些要点,但仍然无法解决,需要您的帮助^^这是一个类的代码:

[ServiceContract]
[DataContract]
public class AmountSpecification : IOrderSpecification
{
    [DataMember]
    public int Amount {get ; set;}

    public AmountSpecification(int amount)
    {
        Amount = amount;
    }
    public bool IsSatisfiedBy(Order o)
    {
        return o.Amount >= Amount;
    }

    [OperationContract]
    public IOrderSpecification And(IOrderSpecification specification)
    {
        return new AndSpecification(this, specification);
    }

}

您正在将服务合同和数据合同混合在一起。 您只需要使用DataContractDataMember属性即可创建数据协定,甚至不需要。

但是,当您使用此数据协定从服务生成服务引用时,并且要向其中添加服务引用的项目没有对定义了AmountSpecification的程序集的引用,它将仅与给定名称和属性。

如果要使用该类的高级类,则必须引用在客户端应用程序中定义该类的程序集,并在服务引用配置中选中“在引用的程序集中重用类型”。 请参阅服务参考复杂类型

您的方法返回IOrderSpecification。

因此,在客户端,没有关于使用哪种实现的指示(AmountSpecification,AndSpecification等),因此客户端将不会创建正确的实例类型。

您需要在界面上添加“熟知类型”属性 这将使wsdl包含实现的定义,因此客户机将获得该信息。

暂无
暂无

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

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