0

我正在寻找重写System.IO.Directory类专门,所以我可以重写Delete方法,因为我得到一个错误,说“目录不是空的”。我想保留该类的所有其他方法,只需为Delete方法的代码添加一些额外的逻辑,因为看起来导致错误的是在服务器上文件删除尚未在服务器上提交的竞争状态然后再报告所有文件已被删除。继承一个静态类,以覆盖成员

我可以编写一个自定义函数来在另一个类中执行此操作,但是我的公司生成它自己的框架,并且我认为这对其他开发人员来说也可能会遇到此错误。

任何人都可以建议一个代码模式,将模拟静态继承而不包装System.IO.Directory类的每个公共成员?

回答

1

您不能覆盖不是被设计为被覆盖的方法。当我们遇到想要扩展的静态框架类时,我们所做的就是定义一个静态的DirectoryEx类。

如果你仔细想想,它确实不是有用或直观的东西。你怎么能证明改变.NET FRAMEWORK中的方法背后的结果或逻辑是正确的。如果一个使用你的框架的开发人员不知道这个“行为”,那将是一场噩梦。

+1

凯撒是正确的。 Delete方法按照指定的方式工作。您应该通过确保服务器仅在提交文件删除后做出响应来解决争用条件。 – Laith

+0

不幸的是,我们的开发人员没有权限修改公司范围内的服务器设置,我不确定甚至可以更改设置来解决此问题。我已经想过创建一个扩展类作为ceasay也建议,但更愿意通过创建我们自己的静态目录类来处理我们遇到的具体问题,然后通过函数继承的目录类。我们所有的方法都包含符号,所以如果发布,使用该方法并不意外。 –