Debugging an IEnumerable method

前端 未结 2 1041
忘了有多久
忘了有多久 2021-02-06 23:40

I have a method with returns an IEnumerable and I\'m trying to debug the code inside that method.

Each time I step through the code in Visual Studi

相关标签:
2条回答
  • 2021-02-07 00:22

    It should be no problem to debug IEnumerable implementation... May be you just using wrong .dll (if you enumerator is in external library)...

    You may try a simple test console, and go from here

    class Program
    {
        static void Main(string[] args)
        {
            foreach (String foo in new Foo())
            {
                Console.WriteLine(foo);
            }
        }
    }
    
    class Foo : IEnumerable<String>
    {
        #region IEnumerable<string> Members
    
        public IEnumerator<string> GetEnumerator()
        {
            yield return "fake # 1";
            yield return "fake # 2";
        }
    
        #endregion
    
        #region IEnumerable Members
    
        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }
    
        #endregion
    }
    
    0 讨论(0)
  • 2021-02-07 00:29

    That method only gets hit when you use the items in the IEnumerable. Remember, IEnumerable lazy loads the items, so just because you're calling the method that returns the IEnumerable, doesn't mean the method is actually getting called at that point. If you want it to get hit right when you call it, add a ToList() at the end of your method call:

    var result = myEnumerableMethod().ToList();
    
    0 讨论(0)
提交回复
热议问题