您可以在类型上而不是在类型的实例上拥有扩展方法吗?
我可以有一个像这样的扩展方法:
DateTime d = new DateTime();
d = d.GetRandomDate();
GetRandomDate 是我的扩展方法。然而上面的说法并没有多大意义。更好的是:
DateTime d = DateTime.GetRandomDate();
但是,我不知道该怎么做。创建为:的扩展方法
public static DateTime GetRandomDate(this System.DateTime dt)
只会在上面的第一个示例中添加 GetRandomDate(),而不是第二个示例。有没有办法实现所需的行为?
I can have an extension method like this:
DateTime d = new DateTime();
d = d.GetRandomDate();
GetRandomDate is my extension method. However the above doesn't make much sense. What would be better is:
DateTime d = DateTime.GetRandomDate();
However, I don't know how to do this. An extension method created as:
public static DateTime GetRandomDate(this System.DateTime dt)
will only add the GetRandomDate() in the first example above, not the second one. Is there a way to achieve the desired behaviour?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不 - 不可能
你需要访问你自己的静态类上的方法......
Nope - not possible
You'll need to access the method on your own static class...
你为什么想要这么做?如果要调用静态方法,为什么不直接调用呢?
好的,您需要使用诸如
DateTimeHelper.GetRandomDate()
之类的东西,而不是DateTime.GetRandomDate()
。Why would you want to? If you want to call a static method, why not call it directly?
OK, you will need to use something like
DateTimeHelper.GetRandomDate()
instead ofDateTime.GetRandomDate()
.只是把它扔在那里,但是您可以创建一个日期时间的部分静态类并在其上抛出扩展方法吗?
Just throwing this out there, but could you create a partial static class of datetime and throw the extension method on that?