我的课程如下:
class Object
{
...
Method();
}
以及许多继承它的类:
class ObjectVariant1 : Object
{
...
Method1();
}
class ObjectVariant2 : Object
{
...
Method2();
}
我有一个列出所有对象的列表:
List<Object> objectList = new List<Object>();
我希望能够遍历该列表,并且对于每个成员,我希望能够在变体类而不是继承的Method()中调用MethodX()。
我发现做到这一点的唯一方法如下:
foreach (var obj in objectList)
{
if (obj is ObjectVariant1)
{
ObjectVariant1 newObj = (ObjectVariant1)obj;
newObj.Method();
}
if (obj is ObjectVariant2)
{
ObjectVariant2 newObj = (ObjectVariant2)obj;
newObj.Method();
}
}
但是,我希望能够轻松添加新的ObjectVariant类,而不必添加此类额外的检查。有没有一种方法可以自动执行foreach循环而无需为我创建的每个类添加新的检查?
谢谢!
答案 0 :(得分:1)
您可以将Object
更改为接口IObject
并使用它:
public interface IObject
{
void Method();
}
class ObjectVariant1 : IObject
{
public void Method()
{
}
}
class ObjectVariant2 : IObject
{
public void Method()
{
}
}
然后您可以使用List<IObject> objectList
并致电obj.Method()
另一种方法(在C#中使用多态)是使用virtual
-override
关键字