如何确保为通过Web服务公开的类的属性设置初始值

时间:2014-05-13 13:32:05

标签: c# .net web-services wcf asmx

我有一个在其构造函数中初始化其属性的类。

public class Criteria
{
    public bool Chapter1 { get; set; }
    public bool Chapter2 { get; set; }
    ...
    public uint MaxResults { get; set; }
    public int Hits { get; set; }

    public Criteria()
    {
        Chapter1 = false;
        Chapter2 = false;
        ...
        MaxResults = 100;
        Hits = -1;
    }
}

此类在Web服务内部用于配置对数据库的搜索。当我在内部构造类时,执行正确的初始化并按预期进行操作。

但是,该类也作为此Web服务的方法中的参数公开:

    [WebMethod]
    public List<xxx> GetxxxCollection(string requestingUserName, Criteria sc)
    {
      ...
    }

在客户端调用此Web服务之前,将构造和配置Criteria对象。但是,因为它通过Web服务公开,所以实际上并没有调用构造函数,并且客户端并不总是正确地设置所有必需的值。

鉴于我们对客户端代码的控制有限,什么是确保设置适当初始值的最佳策略?

3 个答案:

答案 0 :(得分:1)

您无法以任何方式控制客户端。客户端上的“Service”类与包含构造函数的服务类无关。它只是一个“代理”类,而不是真实的东西。

答案 1 :(得分:0)

也许您可以使用nullable字段,这样您就知道客户端没有在字段中设置任何值。

答案 2 :(得分:0)

不要在您的班级中使用自动实施的属性,而是使用旧的手动属性和支持字段,默认情况下 可能 初始化构造函数调用:

public class Criteria
{
  private int _maxResults = 100;

  //-----------------------------------------------------------------------

  public int MaxResults
  {
    get{ return _maxResult; }
    set{ _maxResults = value; }
  }

}