代码之家  ›  专栏  ›  技术社区  ›  ilija veselica

NerdDinner教程-缺少帮助器方法的解释?

  •  0
  • ilija veselica  · 技术社区  · 14 年前

    我从零开始阅读NerdDinner教程。在阅读和编写应用程序时,我谈到了一些助手方法,其中有一个类的例子(AddRuleViolations),但并没有解释在哪里添加这个类。所以我跳过了这一部分,继续学习教程,以后在代码中不使用这个类。
    现在,我被困在“ “再次使用此帮助器方法的节。所以,我下载了他们的最终代码,我看到有文件夹“Helpers”和这些类需要在我的代码中实现。问题是我不想复制/粘贴,我想了解如何添加这个助手方法。
    具体来说,我想将此类添加为帮助器方法:

        public class PaginatedList<T> : List<T>
        {
            public int PageIndex { get; private set; }
            public int PageSize { get; private set; }
            public int TotalCount { get; private set; }
            public int TotalPages { get; private set; }
            public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize)
            {
                PageIndex = pageIndex;
                PageSize = pageSize;
                TotalCount = source.Count();
    
                TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);
                this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize));
            }
            public bool HasPreviousPage
            {
                get
                {
                    return (PageIndex > 0);
                }
            }
            public bool HasNextPage
            {
                get
                {
                    return (PageIndex + 1 < TotalPages);
                }
            }
        }
    

    问题是我没有任何.net或C#方面的经验,也不熟悉在VS中开发应用程序(我只知道C#的一些基础知识)

    谢谢

    1 回复  |  直到 14 年前
        1
  •  1
  •   Svante Svenson    14 年前

    帮助器方法是一个.net的猴子补丁!

    假设你有某个地方有人写的Foo课,你不能改变它。现在您要:

    var foo = new Foo();
    var something = foo.NotThere();
    

    NotThere函数不在foo中,该做什么,该做什么?为什么不是帮助器方法:

    static class FooHelperThingy{
      static string NotThere(this Foo foo){
        return "Bar!!!";
      }
    }
    

    瞧,你可以打电话给我 foo.NotThere() . (如果有一个Using指向helper方法所在的名称空间,那么它就可以工作。)