在学习ASP.NET Quickstart Tutorials的过程中,我遇到一个最难理解的问题
见http://www.dotnetjunkies.com/QuickStartv20/util/srcview.aspx?path=~/aspnet/samples/data/GridViewObject.src&file=GridViewObject_cs\App_Code\AuthorsComponent.cs
希望可以帮我解答下这里面的泛型的具体意义,还有数据读取层和业务逻辑层的理解!!

解决方案 »

  1.   

    using System;
    using System.Data;
    using System.Collections.Generic;public class AuthorsComponent
    {
        public AuthorsComponent ()
        {
            // TODO: Add constructor logic here
        }    public List<Author> GetAuthorsByState (String state, String sortExpression)
        {
            List<Author> authors = new List<Author> ();
            DataSet ds = AuthorsDB.GetAuthorsByState (state);        foreach (DataRow row in ds.Tables[0].Rows)
            {
                authors.Add (new Author ((String)row["au_id"], (String)row["au_fname"], (String)row["au_lname"], (String)row["state"]));
            }        authors.Sort(new AuthorComparer(sortExpression));
            return authors;
        }    public int UpdateAuthor (string ID, string LastName, string Name, string State)
        {
            return AuthorsDB.UpdateAuthor (ID, LastName, Name, State);
        }    public int UpdateAuthor(Author a)
        {
            return AuthorsDB.UpdateAuthor(a.ID, a.LastName, a.Name, a.State);
        }    public List<String> GetStates()
        {
            List<String> states = new List<String>();
            DataSet ds = AuthorsDB.GetStates();        foreach (DataRow row in ds.Tables[0].Rows)
            {
                states.Add((String)row["state"]);
            }
            return states;
        }
    }public class AuthorComparer : IComparer<Author>
    {
        private string _sortColumn;
        private bool _reverse;    public AuthorComparer(string sortExpression)
        {
            _reverse = sortExpression.ToLowerInvariant().EndsWith(" desc");
            if (_reverse)
            {
                _sortColumn = sortExpression.Substring(0, sortExpression.Length - 5);
            }
            else
            {
                _sortColumn = sortExpression;
            }
        }    public int Compare(Author a, Author b)
        {
            int retVal = 0;
            switch (_sortColumn)
            {
                case "ID":
                    retVal = String.Compare(a.ID, b.ID, StringComparison.InvariantCultureIgnoreCase);
                    break;
                case "Name":
                    retVal = String.Compare(a.Name, b.Name, StringComparison.InvariantCultureIgnoreCase);
                    break;
                case "LastName":
                    retVal = String.Compare(a.LastName, b.LastName, StringComparison.InvariantCultureIgnoreCase);
                    break;
                case "State":
                    retVal = String.Compare(a.State, b.State, StringComparison.InvariantCultureIgnoreCase);
                    break;
            }
            return (retVal * (_reverse ? -1 : 1));
        }
    }