我没有得到什么,如果有人可以澄清:
我需要从这里和那里访问这个函数/帮助器:
namespace Laf.Helpers
{
public class Common
{
public string TimeSpanToString(TimeSpan val)
{
return val.ToString(@"hh\:mm");
}
}
}
在我的控制器中,我通过以下方式访问它:
var tmp = new Common();
string str = tmp.TimeSpanToString(tp.DepartureTime);
transferPoint.Add(
new ListTransferPointVM { PortName = tp.PortName, DepartureTime = str }
str);
问题是如何在每个控制器中实现并且没有重复:
DepartureTime = TimeSpanToString(tp.DepartureTime)
可能的答案 我刚刚发现编译器没有皱眉的方式:
public class TransferController : Controller
{
private Common common = new Common();
public ActionResult Index ()
{
...
以后,当我需要它时:
string time = common.TimeSpanToString((TimeSpan)variable);
答案 0 :(得分:4)
您可以将方法string TimeSpanToString(TimeSpan)
设为static
方法。这样您就可以访问它而无需创建Common
对象。您的代码如下所示:
namespace Laf.Helpers
{
public class Common
{
public static string TimeSpanToString(TimeSpan val)
{
return val.ToString(@"hh\:mm");
}
}
}
你的控制器:
transferPoint.Add(
new ListTransferPointVM {
PortName = tp.PortName,
DepartureTime = Common.TimeSpanToString(tp.DepartureTime) }
Common.TimeSpanToString(tp.DepartureTime));
编辑:正如Michael Petrotta所建议的那样,扩展方法会更好。实施可以是:
namespace LaF.ExtensionMethods
{
public static class MyExtensions
{
public static string TimeSpanToString(this TimeSpan ts)
{
return ts.ToString(@"hh\:mm");
}
}
}
您现在可以调用以下方法:
tp.DepartureTime.TimeSpanToString();