我有一个类在其构造函数中初始化其属性。如何确保为通过webservice暴露的类的属性设置初始值
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服务公开,构造函数实际上并没有被调用,并且客户端并不总是正确设置所有必需的值。
鉴于我们对客户端代码的控制有限,确保设置适当的初始值的最佳策略是什么?
它已经一段时间以来,我使用这些基本的Web服务,但IIRC,是不是在反序列化之前调用的无参数构造函数?无论如何,你的属性不必在构造函数中设置它们,而是在字段声明中设置它们的初始值。编辑:但如果这是真的,默认的构造函数_is_运行,那么也许你需要仔细检查正在发送的数据:也许你没有发送正确的信息。 –
ASMX是一项传统技术,不应用于新开发。 WCF或ASP.NET Web API应该用于Web服务客户端和服务器的所有新开发。一个暗示:微软已经在MSDN上退役了[ASMX Forum](http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/threads)。 –
客户端将负责正确初始化对象。如果客户没有足够的知识去做,那么您将需要重新考虑您的方法/重新设计您的应用程序。 – Tim