public class TriggerableObject
{
Trigger(){
DoSomething();
}
}
public class X : TriggerableObject
{
Trigger(){
DoSomethingElse();
}
}
public class X2 : TriggerableObject
{
Trigger(){
DoSomethingOther();
}
}
public class Trigger
{
TriggerableObject obj = FindMyObject();
obj.Trigger();
}
Class Trigger从其他对象中查找类X,但是当它调用Trigger()时,将调用基类中的方法(DoSomething()
)。但是,我希望它从类X(DoSomethingElse()
)调用Trigger,如果我将其转换为类X,它会起作用。问题是我不知道找到的类是X还是X2,所以如果我静态地将它投射到X,然后它不适用于X2
我如何使这项工作?
答案 0 :(得分:0)
接口是您的朋友。如果您的代码中有特定的结构(如您所示)但实现方式不同,请考虑 interfaces 。当然,这并不总是答案,但您的上述示例可以通过以下方式编写。
public interface ITriggerableObject
{
Trigger();
}
public class X : ITriggerableObject
{
Trigger(){
DoSomethingElse();
}
}
public class X2 : ITriggerableObject
{
Trigger(){
DoSomethingOther();
}
}
public class Trigger
{
ITriggerableObject obj = FindMyObject();
obj.Trigger();
}
语法可能已关闭,因为我没有编译它,但语义是可靠的。