假设我有两个类:
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)
| 归档时间: |
|
| 查看次数: |
549 次 |
| 最近记录: |