使用Abstract类作为参数并创建该类的新项

时间:2017-11-28 18:49:12

标签: c# function class inheritance abstract

我有2个API,它们都有相同的方法但名称不同。

我用这两个继承了这个抽象类。

现在我正在尝试创建另一个使用这些API的类,我不希望它关心它使用哪个API。

如何将抽象类作为参数传递并将其用作api的一个?

有更好的方法吗?

示例代码:

public abstract class AbstractClass
{
    public abstract string Func1();

}
public class Class1: AbstractClass
{
    public override string Func1()
    {
        return "Class1";
    }

}
public abstract class Class2: AbstractClass
{
    public override string Func1()
    {
        return "Class2";
    }

}
public class Class3
{
    Type type;
    public Class3(Type type)
    {
        this.type = type;
    }
    public string UseFunc1()
    {
        //I know this wont work but what shuld I do
        type a = new type();
        return a.Func1();
    }
}

1 个答案:

答案 0 :(得分:0)

我认为你可能想要实现的目标如下。虽然您无法创建抽象类,但您可以传递一个

public class Class3
{
    AbstractClass abstractMember

    public Class3(AbstractClass abstractMember)
    {
       this.abstractMember = abstractMember;
    }

    public string UseFunc1()
    {
        return abstractMember.Func1();
    }
}

您可以这样称呼:

Class2 c2 = new Class2();
Class3 c3 = new Class3(c2);