如何在方法内声明方法

时间:2014-05-07 11:44:25

标签: c# class

我有一个这样的课程:

public Class Work
{
   public DataTable GetWork()
      {
         //return a datatable which contains information about working hourse

      }

}

我想在getWork方法中声明另一个方法。

实际上我想创建一个类,我可以在其中调用类似的东西:

DataTable myData=Work.GetWork.ToDays()//Returns work days
DataTable myOtherData=Work.GetWork.ToHour();//Returns work hours

我如何达到上述状态? 提前谢谢并原谅我可怜的英语:(

4 个答案:

答案 0 :(得分:2)

您可以使用Extension Methods来实现这一目标 例如:

public static class DataTableExtensionMethods
{
  public static int ToDays(this DataTable dt)
  {
    // fetch and return the days.
  }
}

现在你可以用:

来调用它
var myDays = Work.GetWork().ToDays();

答案 1 :(得分:1)

您无法在另一个方法中定义方法。

您可以改为在类中创建一个属性,如下所示:

public class Work
{
    public static DataTable WorkProperty
    {
        get
        {
            //return a datatable which contains information about working hourse

        }
    }
}

现在,定义您的GetWorkInHoursGetWorkInDays方法,以便他们将DataTable作为参数,并返回DataTable,并在内部执行您的操作。

现在,你可以做像

这样的事情
DataTable myData=Work.WorkProperty.GetWorkInDays()//Returns work days
DataTable myOtherData=Work.WorkProperty.GetWorkInHours();//Returns work hours

答案 2 :(得分:1)

创建一个自定义DataTable课程,您可以在其中实施ToDaysToHour操作。

示例:

 public class Work
 {
     public MyDataTable GetWork()
     {
          //return a datatable which contains information about working hourse

     } 
 }

 public class MyDataTable : DataTable
 {
      public int ToDays()
      {
          // todo: implement
      }
      public int ToHour()
      {
          // todo: implement
      }
 }

我喜欢这种扩展方法的方法,因为你把逻辑放在逻辑上属于它的位置,并且它可以自动获得而无需添加using语句。

答案 3 :(得分:0)

您必须创建另一个类

public class Work
{
    public DataTable GetWork()
    {
        DataTable result;

        //create result

        return result;
    }
}

public class DataTable 
{
    // properties

    // int or other type...
    public int ToDays()
    {
         // return a property
         return something;
    }

    // int or other type...
    public int ToHours()
    {
         // return a property
         return something;
    }
}

您可以使用以下方式调用结果:

var myData = Work.GetWork().ToDays()//Returns work days
var myOtherData  =Work.GetWork().ToHour();//Returns work hours

(确保GetWork()总是返回非空的东西)