如何实现静态类代码复用?寻找静态抽象类的优雅替代方案
C# 静态类复用公共方法的简洁实现方案
我有7个简化后结构如下的静态类:
public static class ClassN { private static Logger MyLogger = Logger.New("ClassN"); private static MyClass GetInstance() => new MyClass(some constant arguments); public static Something Get() { return MyStaticClass.Get(GetInstance(), MyLogger); } }
我想给每个类添加5个类似下方的方法,以此简化数百处对Get()方法的调用:
public static Prop1 GetProp1() { return Get().Prop1; } public static Prop2 GetProp2() { return Get().Prop2; } // 其余3个方法以此类推
重复编写这些冗余代码显然不合理,我原本期望采用如下写法来复用逻辑:
public abstract static class ClassBase { private static abstract Logger MyLogger; private static abstract MyClass GetInstance(); public static Something Get() { return MyStaticClass.Get(GetInstance(), MyLogger); } public static Prop1 GetProp1() { return Get().Prop1; } public static Prop2 GetProp2() { return Get().Prop2; } // 其余3个方法以此类推 }
然后让各个业务类简化为:
public static class ClassN : ClassBase { private static MyClass GetInstance() => new MyClass(some constant arguments); private static Logger MyLogger = Logger.New("ClassN"); }
这样就能直接通过Class1.Get()、Class2.Get()这类方式调用对应方法。
但我清楚C#的限制:静态类无法继承、不能被标记为抽象类,也无法定义静态虚拟成员。我查阅了相关技术资料,但没找到符合这种简洁思路的解决方案。
我希望找到类似上述思路的简洁实现方案,由于这些方法在代码中被调用数百次,我不想将方法改为非静态(需要在各处实例化对象),也不想使用工厂模式(同样存在使用不便的问题)。
内容的提问来源于stack exchange,提问作者xavier
相关产品推荐
相关产品推荐

