首页 > 解决方案 > 从父类的方法中使用子类的静态覆盖属性

问题描述

是否可以在父类中拥有某种静态抽象属性,然后子类将覆盖该属性,以便父类随后能够在其方法中使用这个现已初始化的属性?

我知道这是非法代码,但它应该说明我想要实现的目标:

public class Parent {
    public static abstract String PROPERTY;

    public static String MyMethod() {
        return $"Do something with {PROPERTY}";
    }

    public static String MyMethodTwo() {
        return $"Do something with the same property {PROPERTY}";
    }
}

public class ChildA {
    public static override String PROPERTY = "A";
}

public class ChildB {
    public static override String PROPERTY = "B";
}

ChildA.MyMethod() //expecting "Do something with A"
ChildB.MyMethod() //expecting "Do something with B"

现在,我正在做这样的事情,这很有效,但是当我制作许多父方法和子类时可能会重复:

public class Parent {
    protected static String MyMethodBase(String property) {
        return $"Do something with {MyProperty}";
    }

    protected static String MyMethodTwoBase(String property) {
        return $"Do something with the same property {MyProperty}";
    }
}

public class ChildA {
    public static String PROPERTY = "A";

    public static String MyMethod(){
        return MyMethodBase(PROPERTY);
    }

    public static String MyMethodTwo(){
        return MyMethodTwoBase(PROPERTY);
    }
}

public class ChildB {
    public static String PROPERTY = "B";

    public static String MyMethod(){
        return MyMethodBase(PROPERTY);
    }

    public static String MyMethodTwo(){
        return MyMethodTwoBase(PROPERTY);
    }
}

标签: c#

解决方案


推荐阅读