如何强制静态类实现特定的方法?

时间:2010-08-04 22:11:34

标签: c# static-methods static-members static-classes

我需要创建一组静态类,并且所有这些类都需要实现相同的方法。我想找到一种强制它们的方法。

我知道静态类不能派生除System.Object之外的任何东西。我应该使用非静态方法吗?它可能是,但是这个类的方法都不会使用实例属性...

我最好的机会是我应该使用单身人士。我将使用一个实例,但至少我不需要每次需要使用方法时实例化该类。

您建议的替代方案是什么?

编辑:

我不会实现这些方法。我需要强制其他开发人员使用特定签名实现特定方法。每个班级的所有签名都是相同的。就是这样。

想象一下,您有一个静态类,可以从办公室的数据库中获取记录。你有几种方法可以做到这一点。由于这些方法都不共享变量,因此它们被标记为静态,因此是类。

现在,您和团队中的其他开发人员必须对其他数据库甚至是您无法控制的API执行相同操作,这无关紧要。您希望强制您的同事使用具有相同签名的完全相同的方法来实现所有这些类。

您的意见总是受欢迎的,但现在我只想找到最接近的方式。

我可以使用一个所有其他人都可以继承的抽象类。但由于这些方法不共享任何内容,我宁愿不在每次需要时都实例化该类。

这就是为什么我提到使用单例模式。我不应该这样做吗?

1 个答案:

答案 0 :(得分:0)

如果我正确地阅读了你的问题,除非你的方法有很多重载,否则单例将不起作用。

当我们谈论接口和基类等时,如果您控制代码,是否有理由不能只创建一组所有实现所需方法的类?当然,你需要记录你做了什么以及为什么,但除了坚持“惯例”之外,你有理由这样做吗?

如果您正在使用静态类,它不会继承System.Object以外的任何内容,并且不实现任何接口,那么无论如何都无法互换它们。

修改 根据您的编辑,您似乎正在尝试通过代码本身强制执行编码策略。每个开发商都有自己的政策,程序和标准,从文档,项目布局到方法签名。我当前的客户端对方法签名非常严格,因为我们向BizTalk传递了很多东西,并且很难改变BizTalk解决方案只是因为有人不想遵循团队其他人使用的模式。

如果团队中的成员正在编写这些静态类和静态方法,我没有看到(除了可能的办公室政治)为什么你不能通过实施政策来实现这一目的。

如果您必须通过代码执行此操作,我认为您已经遇到了接口和实例方法。

如果你愿意,一旦创建了这些实例方法,你就可以编写静态帮助器类作为包装器(所以你个人而言,不必每次都实例化对象),但我不知道那会得到你什么。