首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >入参webservice方法

入参webservice方法
EN

Stack Overflow用户
提问于 2015-12-21 06:00:42
回答 2查看 37关注 0票数 1

我有一个名为MyMethodQuery的类,它包含一个属性和一个构建器,该构建器将检查属性是否正确填充:

代码语言:javascript
运行
复制
public class MyMethodQuery
   {
       public string Id { get; set; }

       public MyMethodQuery ()
       {
           if (string.IsNullOrEmpty(this.Id))
               throw new System.ArgumentException("Parameter cannot be null");
       }
   }

我的方法是:

代码语言:javascript
运行
复制
public string MyMethod(MyMethodQuery MyMethodQuery)
{
   return "it's ok !";
}

当我使用id调用我的方法时,我填充了一个抛出的异常:

代码语言:javascript
运行
复制
An exception of type 'System.ArgumentException' occurred 
Additional information: Parameter can not be null

我什么都不了解

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-12-21 06:07:25

这应该是意料之中的。创建MyMethodQuery的新实例时,将调用该类的构造函数,此时ID字段仍为空

您可以更改构造函数以接收初始值

代码语言:javascript
运行
复制
public class MyMethodQuery
{
    public string Id { get; set; }

    public MyMethodQuery(string initialValue = "1")
    {
        this.Id = initialValue;
        if (string.IsNullOrEmpty(this.Id))
            throw new System.ArgumentException("Parameter cannot be null");
    }
}

当然,如果您使用与类名不同的名称调用变量,那么理解您的代码会很有帮助

代码语言:javascript
运行
复制
void Main()
{
    MyMethodQuery anInstance = new MyMethodQuery("1");   
}
票数 1
EN

Stack Overflow用户

发布于 2015-12-21 06:10:00

如果您使用的是c#6,则可以直接初始化自动属性

代码语言:javascript
运行
复制
public class MyMethodQuery
 {
    public string Id { get; set; } = "Inialized";

   public MyMethodQuery ()
   {
       if (string.IsNullOrEmpty(this.Id))
           throw new System.ArgumentException("Parameter cannot be null");
   }

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34386359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档