【问题标题】:NerdDinner tutorial - missing explanation for Helper methods?NerdDinner 教程 - 缺少对 Helper 方法的解释?
【发布时间】:2011-01-18 18:30:31
【问题描述】:

我已经从头开始阅读 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# 的基础知识)

谢谢,
伊莱

【问题讨论】:

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


    【解决方案1】:

    Helper 方法是猴子补丁的 .net 方法!

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

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

    foo中没有NotThere函数,怎么办,怎么办?为什么不是辅助方法:

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

    瞧,您可以致电foo.NotThere()。 (如果你有一个 Using 指向辅助方法所在的命名空间,它就可以工作。)

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

    【讨论】:

    • 我想知道如何将它添加到项目中。我是否创建新文件夹“Helpers”,然后单击它并添加新课程,然后将我的课程复制粘贴到那里...?它会可用还是有其他事情要做?
    • “如果你有一个 Using 到辅助方法所在的命名空间,它就可以工作”我明白了,这是至关重要的
    • 是的,关键是这个词。 (注意:在 ASP.NET 中,您可以在 web.config 中添加默认命名空间,这样您就不必在视图中包含它们,可以减少代码。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多