【问题标题】:Foreach statement cannot operate on type ' ' because it does not contain a public definition for 'GetEnumerator'Foreach 语句无法对类型“”进行操作,因为它不包含“GetEnumerator”的公共定义
【发布时间】:2014-05-02 10:22:23
【问题描述】:

我的 Api 控制器中有以下内容:

[AcceptVerbs("POST")]
public Model.ViewModel.ContactSaveRequest DeleteMethod(Model.ViewModel.ContactSaveRequest methodsToDelete)
{
    var contactMethodRepos = new Model.ContactMethodRepository();

    foreach (var contactMethod in methodsToDelete)
    {
        contactMethodRepos.Delete(contactMethod);
        return contactMethod;
    }
}

这是我的类定义联系方法

[JsonProperty("id")]
public int ID { get; set; }

[JsonProperty("contactID")]
public int ContactID { get; set; }

[JsonProperty("typeOfContactMethodID")]
public int TypeOfContactMethodID { get; set; }

[JsonProperty("text")]
public string Text { get; set; }

[JsonProperty("methodsToDelete")]
public IEnumerable<ContactMethod> methodsToDelete { get; set; }

ContactSaverequest类:

public class ContactSaveRequest
{
    [JsonProperty("contact")]
    public Contact Contact { get; set; }

    [JsonProperty("contactMethods")]
    public IEnumerable<ContactMethod> ContactMethods { get; set; }        
}

我有一个将方法推入其中以被删除的数组 (methodsToDelete)。我正在尝试在数组上使用Delete 方法,但不断收到contactSaveRequest 不包含GetEnumerator 定义的问题。

【问题讨论】:

    标签: c# asp.net-apicontroller


    【解决方案1】:

    听起来你只是想使用:

    foreach (var contactMethod in methodsToDelete.ContactMethods)
    

    您不能迭代 ContactSaveRequest,但您可以迭代 ContactMethods 属性返回的 IEnumerable&lt;ContactMethod&gt;

    【讨论】:

    • @moleman:“这似乎不起作用”并没有给我们任何有用的信息。尝试这样做时出了什么问题?
    • 对不起,它说'联系人姓名在当前上下文中不存在'。
    • @moleman:哦,对了——现在修复了。不过,如果您理解答案,我希望您能解决这个错字。 (理解答案总是比仅仅插入代码和希望更重要。)
    【解决方案2】:

    尝试像这样实现IEnumerable接口

    公共类 ContactSaveRequest : IEnumerable {

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-20
      • 2020-10-21
      • 2017-03-08
      • 2016-03-27
      相关资源
      最近更新 更多