gpt4 book ai didi

c# - 在其基类上调用类的方法

转载 作者:太空宇宙 更新时间:2023-11-03 17:20:24 25 4
gpt4 key购买 nike

我有一个名为 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);

但我认为有更好更简单的方法?!

谢谢!

最佳答案

只需将 export_to_csv 设为虚拟并在派生类中覆盖它。您可以在基 export_to_csv 中实现常用功能,派生类可以调用它。

class Graphic_obj {
virtual void export_to_csv(){
// Do stuff that's common across all classes
}
}

class Graphic_obj_text : Graphic_obj {
override void export_to_csv(){
base.export_to_csv():
// Do stuff specific to Graphic_obj_text
}
}

关于c# - 在其基类上调用类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23625309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com