我曾经看过类似的问题/答案发布在过去,但我的问题与我所见到的其他问题略有不同。
基本上,我有一个公共接口和几个实现/继承该接口的类。然后,在一个单独的类中,我有必须根据给定的IObject接口对象执行方法的方法。然而,每个对象必须以不同的方式被处理,因此对于每个扩展IObject的具体类型都有一个单独的方法声明。
class IObject
{
...
}
class ObjectType1 : IObject
{
...
}
class ObjectType2 : IObject
{
...
}
class FooBar
{
void Foo (ObjectType1 obj);
void Foo (ObjectType2 obj);
}
现在,对我来说,一个显而易见的解决方案是通过利用动态绑定,在每个单独的类中放置方法Foo,这将自动选择在运行时执行的正确Foo。然而,这在这里不是一个选项,因为我正在定义多个如何处理这些对象的模型,并且我宁愿将处理对象的每个单独模型封装在其自己的类中,而不是将所有模型都放入对象类中。
我找到了这篇文章,其中介绍了如何使用字典在运行时动态选择正确的方法实现。我对这种方法很满意;但是,假设我必须在每个模型中执行此类分发。如果我只有IObject及其具体实现,是否有任何方式可以概括这种方法,以便我可以基于对象的运行时类型调用任何名称的方法?
我知道这可能是一个不清楚的问题,但我会非常感激任何帮助。