C# 在函数中放置经常重复的代码?

C# 在函数中放置经常重复的代码?,c#,asp.net,ado.net,C#,Asp.net,Ado.net,我经常在onclick和onload中使用此代码或此代码的一种形式: DataTable dt = new DataTable(); using (SqlConnection con = new SqlConnection(conString)) { using (SqlCommand cmd = new SqlCommand("administratorGetAll", con)) { using (SqlDataAda

我经常在onclick和onload中使用此代码或此代码的一种形式:

 DataTable dt = new DataTable();
    using (SqlConnection con = new SqlConnection(conString))
    {
        using (SqlCommand cmd = new SqlCommand("administratorGetAll", con))
        {
            using (SqlDataAdapter da = new SqlDataAdapter(cmd))
            {
                da.Fill(dt);
            }
        }
    }
因此,我想知道怎样才能最大限度地减少如此大的重复;功能

我目前正在尝试这样的方法:

 public void SqlStructGetAll(string storedProc, string connection)
{
    DataTable dt = new DataTable();
    using (SqlConnection con = new SqlConnection(connection))
    {
        using (SqlCommand cmd = new SqlCommand(storedProc, con))
        {
            using (SqlDataAdapter da = new SqlDataAdapter(cmd))
            {
                da.Fill(dt);
            }
        }
    }
}

但是我不确定我是否离这很远。

有一些设计模式可以解决这样的设计问题,其中代码重复是主要的问题

适用于您的场景的模式是来自GangofFour模式目录的模板方法设计模式

您的方向正确-有关设计模式的详细信息,请参阅


大多数现代框架都为数据库处理等操作提供了实用工具包装器和模板方法——您可以使用提供此类方法的Spring.NET。您可以查看此链接,例如使用Spring.NET中ADO.NET API的模板方法,方法是将数据访问放在onclick和onload函数的代码中,将数据访问层与表示层紧密耦合。虽然您认为应该从每个函数中提取这种类型的代码是正确的,但是重新思考您的体系结构可能会更好。Dan Wahlin有一个使用ADO.Net的。您可能会从他的代码示例中得到一些好的想法,这些想法将来可能会对您有所帮助


删除了功能编程标签。将公共代码放入函数并不意味着函数编程。这是F#、Lisp和其他许多语言所特有的。我担心对于我正在创建的网站来说,其中一些可能会稍微高级一些。在不创建业务层和模型层对象的情况下,是否有一种更轻松的方法?