如何在类实例中调用常用函数?

Fre*_*red 4 c#

假设我有两个类:

class Batman
{
    public void Robin(){...}
    public void Jump(){...}
}

class Superman
{
    public void Kryptonie(){...}
    public void Jump(){...}
}
Run Code Online (Sandbox Code Playgroud)

现在,我有一个这样的类的实例:

public object Crossover()
{
     var batman = new Batman();
     var superman = new Superman();

     return superman;
}
Run Code Online (Sandbox Code Playgroud)

我不知道Crossover将返回哪个类的实例,它可能是蝙蝠侠或超人.

var someVariableName = Crossover(); //I don't know if this contains an instance of Superman or Batman;

//I do know that no matter which class instance is returned, it will always contain a function named Jump which i want to trigger:
someVariableName.Jump();
Run Code Online (Sandbox Code Playgroud)

现在我知道我可以这样做:

if (someVariableName.GetType() == typeof(Superman)) 
{
    ((Superman) someVariableName).Jump()
}
Run Code Online (Sandbox Code Playgroud)

但是有没有办法触发Jump函数而不必用if..else手动检查每个类型..当我知道保存在该变量中的类的实例将始终包含Jump函数时?

Joh*_*ner 14

使用界面:

interface ISuperHero
{
    void Jump();
}

class Batman : ISuperHero
{
    public void Robin(){...}
    public void Jump(){...}
}

class Superman : ISuperHero
{
    public void Kryptonie(){...}
    public void Jump(){...}
}
Run Code Online (Sandbox Code Playgroud)

然后从您的方法返回接口:

public ISuperHero Crossover()
Run Code Online (Sandbox Code Playgroud)