在另一个c#中使用一个项目的抽象类

时间:2017-07-20 05:49:49

标签: c# oop inheritance

我有两个项目项目A和项目B.在项目B中有一个类TC,它是一个抽象类,在该类中有一个抽象方法CanSave()。 我在项目B中添加了项目A的参考。 在项目BI中,希望使用抽象方法CanSave作为项目A的重写。因此,一种方法是简单地将项目A的类添加为项目B的父类,然后将其用作覆盖方法。但问题在于已经是项目B的类继承的类。所以我不能使用它,因为不能使用多个基类。 什么是解决方案,以便我可以在项目B中使用抽象类

片段 项目A.     公共抽象类TC     {          protected abstract bool CanSave(object parameter);     }

项目B.     公共类OP:CM(已经有一个基类)     {         //想在这里使用CanSave     }

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

如果它是抽象方法(没有实现),我会建议声明接口。您可以从一个类继承,但可以从多个接口继承(无论您是否已从类继承)。

答案 1 :(得分:1)

将您的抽象类TC转换为和接口,然后您将能够在类OP中从它派生:

public interface ITC
{
    bool CanSave(object parameter);
}

public class OP: CM, ITC
{
    public bool CanSave(object parameter) 
    {
        ...
    }
}

答案 2 :(得分:0)

CanSave方法逻辑提取到静态方法并在两个项目中使用它会更好。否则,您必须在TC实例

中保留类OP的实例

答案 3 :(得分:0)

你可以在Project B中创建另一个继承TC

的类(比方说TTC)
public class TTC: TC
{
    ...
}

然后在OP类中创建一个TTC对象

public class OP:CM
{
    private TTC ttcobject;
    //you can inject it
    public OP(TTC _ttc){
        this.ttcobject = _ttc;
        // or just initialize it here
        // ttcobject = new TTC();
    }

    public bool CanSave(object parameter)
    {
        return ttc.CanSave(parameter;
    }
}