我有一个这样的课程:
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
我如何达到上述状态? 提前谢谢并原谅我可怜的英语:(
答案 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
}
}
}
现在,定义您的GetWorkInHours
和GetWorkInDays
方法,以便他们将DataTable
作为参数,并返回DataTable
,并在内部执行您的操作。
现在,你可以做像
这样的事情DataTable myData=Work.WorkProperty.GetWorkInDays()//Returns work days
DataTable myOtherData=Work.WorkProperty.GetWorkInHours();//Returns work hours
答案 2 :(得分:1)
创建一个自定义DataTable
课程,您可以在其中实施ToDays
和ToHour
操作。
示例:
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()总是返回非空的东西)