我有一个在其构造函数中初始化其属性的类。
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服务公开,所以实际上并没有调用构造函数,并且客户端并不总是正确地设置所有必需的值。
鉴于我们对客户端代码的控制有限,什么是确保设置适当初始值的最佳策略?
答案 0 :(得分:1)
您无法以任何方式控制客户端。客户端上的“Service”类与包含构造函数的服务类无关。它只是一个“代理”类,而不是真实的东西。
答案 1 :(得分:0)
也许您可以使用nullable
字段,这样您就知道客户端没有在字段中设置任何值。
答案 2 :(得分:0)
不要在您的班级中使用自动实施的属性,而是使用旧的手动属性和支持字段,默认情况下 可能 初始化构造函数调用:
public class Criteria
{
private int _maxResults = 100;
//-----------------------------------------------------------------------
public int MaxResults
{
get{ return _maxResult; }
set{ _maxResults = value; }
}
}