通过接口使用静态类?

想象一下,您需要从整个应用程序中访问一些方法。 静态类是理想的。

public static class MyStaticClass { public static void MyMethod() { // Do Something here... } } 

但也许将来我会在另一个静态类中添加静态方法的第二个实现。

 public static class MyStaticClass2 { public static void MyMethod() { // Do Something here... } } 

有没有办法改变我的其他代码中使用的静态类而不更改MyStaticClass.MeMethod();的调用MyStaticClass.MeMethod();MyStaticClass2.MyMethod();

我想到了一个界面,但我不知道如何实现这个……如果我说疯了就说出来,我只会改变电话:D

你想要一个工厂模式

所以你的工厂是

 public static MyStaticClassFactory { public static IMyNonStaticClassBase GetNonStaticClass() { return new MyNonStaticClass1(); } } 

 public class MyNonStaticClass1 : IMyNonStaticClassBase { // } 

接口

 public interface IMyNonStaticClassBase { void MyMethod(); } 

我们使用(温莎城堡) https://www.nuget.org/packages/Castle.Windsor作为工厂Container。

这是同一个校长。

每个接口可以有许多实现,但在运行时只有一个与Factory中的接口相关联。

您需要做的就是在需要时在工厂级别交换实现类。

如果您希望优化代码(即实现类),这是一个非常有用的工具,因为您可以安全地知道如果在新实现类中发现任何错误,您可以简单地将实现更换为预先存在的一。