You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现静态类代码复用?寻找静态抽象类的优雅替代方案

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:33:19