问题描述
public class MyTimeZoneHelperClass {
public static TimeZoneInfo EST = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
public static DateTime Convert_UTC_to_EST(this DateTime utcDateTime)
{
return TimeZoneInfo.ConvertTimeFromUtc(utcDateTime,EST);
}
public static DateTime NowEST()
{
return DateTime.UtcNow.Convert_UTC_to_EST();
}
}
我刚刚去写了一个扩展方法,例如我要命名为“ EstNow”的DateTime TYPE,所以我可以使用DateTime.EstNow,就像这段代码使用DateTime.UtcNow一样。如果我有了它,我就不必在上面引用此静态类-MyTimeZoneHelperClass.NowEst-我的代码会更简洁一些,我不必记住该类名/我更喜欢这里的一个类而不是两个
所以扩展方法不能那样工作。它们是静态方法,但是您需要一个he类的实例来调用该方法-duh!
这可能吗?我可以(最好是轻松地)让编译器识别类型上的新的/自定义静态方法吗?
解决方法
否,您不能编写“静态扩展”成员来扩展类型而不是类型实例。它不是C#的一部分。它已经被讨论了,将来可能会发生,尽管我不认为它在C#9的预期功能列表中。
,我们所说的c#github上有一个未解决的问题:https://github.com/dotnet/csharplang/issues/2505
打开表示尚未实现。总结一下:
- 没有解决方法,没有什么尝试可以减轻缺少的功能
- 目前似乎没有兴趣实施此操作
ldm上没有人认为这值得一提。