【问题标题】:Add items to ICollection将项目添加到 ICollection
【发布时间】:2014-04-16 13:10:24
【问题描述】:

我将 ICollection 定义为

 public virtual ICollection<Attempt> Attempts { get; set; }

Attempt被定义为

 public class Attempt
 {
     public Guid Id { get; set; }
     public string AttemptsMetaData { get; set; }
     public DateTime Time { get; set; }
     public bool Answered { get; set; }
     public DateTime Disconnected { get; set; }
 }

现在我想将 ICollection 传递给一个方法。

public void AddTask(ICollection<Attempt> attempts)
{
    // Do something to the item in attempts.
} 

现在我必须为此集合创建一个示例数据。我不确定如何。下面的代码可能是错误的。 我以为是

        // test data
        Guid id = new Guid();
        string attempt = "test";
        DateTime dt = DateTime.Now.AddDays(-1);
        bool answered = true;
        DateTime disconnected = DateTime.Now;
        ICollection <Attempt> attempts= new List<Attempt>();
        // try to add sample data to the list

【问题讨论】:

  • ICollection 是一个更抽象的接口。对于这些场景,更喜欢 IEnumerable。
  • 创建 Attempt 实例,设置属性值,然后调用 attempsts.Add(您的实例在此处);

标签: c# icollection


【解决方案1】:
List<Attempt> attempts= new List<Attempt>();
//Create a Instance of Attempt
Attempt objAtt = new Attempt();
Guid id = new Guid();
objtAtt.Id =id;
objtAtt.Time = DateTime.Now;
objAtt.AttemptsMetaData ="test";
objAtt.Answered = true;
objAtt.Disconnected = DateTime.Now;
attempts.Add(objAtt);

在这里传递给方法,

AddTask(attempts);

你的方法是这样的,

public void AddTask(List<Attempt> attempts)
{

} 

【讨论】:

  • 那么如何将其传递给 AddTask(ICollection 尝试)?
  • @love 检查修改后的答案
  • @Love - 您可以传递您拥有的列表。作为一个基本接口,它接受列表。
  • 所以您的意思是我必须将方法 AddTask 更改为 List?我们可以将其保留为 ICollection 并传递一个 List 对象吗?
【解决方案2】:
var attempt = new Attempt(/*whatever here*/);

attempts.Add(attempt);

AddTask(attempts);

【讨论】:

    【解决方案3】:

    你试过了吗:

     public void AddTask(Attempt objAtempt)
        {
            List<Attempt> attempts = new List<Attempt>();
            objAtempt.Id = Guid.NewGuid();
            objAtempt.Time = DateTime.Now;
            objAtempt.AttemptsMetaData = "test";
            objAtempt.Answered = true;
            objAtempt.Disconnected = DateTime.Now;
            attempts.Add(objAtempt);
        }
    

    【讨论】:

      猜你喜欢
      • 2013-06-03
      • 2015-09-30
      • 2014-01-06
      • 2011-12-10
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多