NerdDinner教程 - 缺少Helper方法的解释?

时间:2010-02-19 12:43:40

标签: c# asp.net-mvc methods helper nerddinner

我从头开始阅读NerdDinner教程。在阅读和编写应用程序时,我参与了一些Helper方法,并且有一个类(AddRuleViolations)的一个例子,但是没有任何解释在哪里添加这个类。所以我跳过这个并继续教程而不在以后的代码中使用这个类。
现在,我被困在“添加页面导航UI ”部分,其中再次使用此辅助方法。所以,我下载了他们的最终代码,我发现有一个文件夹“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#的基础知识)

谢谢,
ILE

1 个答案:

答案 0 :(得分:1)

帮手方法是猴子补丁的.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()。 (如果你有一个使用指向辅助方法所在的命名空间,它就可以工作。)

标记为this的参数将是您正在修补的对象。