【发布时间】:2014-06-30 18:38:04
【问题描述】:
我有一个名为 Graphic_obj 的基类。
而且我有很多派生类,例如:Graphic_obj_text、Graphic_obj_img、...
现在我想要一个包含所有我创建的派生对象的列表..
List<Graphic_obj> obj_list=new List<Graphic_obj>();
现在我的问题出现了..
我想遍历我的对象并为每个对象调用一个“导出”函数,但来自派生类本身!
我不想 if/else 或切换派生类的所有类型并强制转换它们..
我会想象这样的事情:
foreach (Graphic_obj obj in obj_list)
{
(obj as obj.GetType()).export_to_csv();
}
但这不会编译..
我可以这样做:
obj.GetType().GetMethod("export_to_csv").Invoke(obj, null);
但我认为有更好更简单的方法?!
谢谢!
【问题讨论】:
-
如果您正确地覆盖该方法,则将调用派生方法。分享您的方法实现。
标签: c# casting derived-class base-class