【发布时间】:2014-10-03 13:19:36
【问题描述】:
假设我有两个班级:
class Batman
{
public void Robin(){...}
public void Jump(){...}
}
class Superman
{
public void Kryptonie(){...}
public void Jump(){...}
}
现在,我有这些类的一个实例:
public object Crossover()
{
var batman = new Batman();
var superman = new Superman();
return superman;
}
我不知道 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();
现在我知道我可以这样做:
if (someVariableName.GetType() == typeof(Superman))
{
((Superman) someVariableName).Jump()
}
但是,当我知道保存在该变量中的类的实例将始终包含一个 Jump 函数时,有没有一种方法可以触发 Jump 函数而无需使用 if..else.. 手动检查每种类型?
【问题讨论】:
-
亲爱的 15K+ 代表回答者,您确定这个问题是独一无二的吗?您不应该花几秒钟时间寻找参考问题而不是回答它吗?
-
@CodeCaster 不过这个有超级英雄。
-
@CodeCaster, yeah like you do that all the time.
-
@user2711965 那是两年前的事了。人们学习。不过你是对的,应该作为 How do I Convert a string to an enum in C#? 的副本关闭。
-
@CodeCaster:你是对的。但是结束一个问题并没有什么乐趣。答案是……
标签: c#