动态检测哪个子类包装在基类类型对象中

安德鲁

我有一个方法,该方法获取基类类型的变量,但是我将子类的变量传递给此方法。

简单的例子:

public class Shape {
    public string Color {get;set;}    
}

public class Square : Shape {
    public int Corners {get;set;}    
}

public class Circle : Shape {
    public int Radius {get;set;}    
}

某些方法如下:

public void GetDetails(Shape item){
    // do something        
}

然后,我将子类对象传递给此方法:

var sq = new Square();
var cir = new Circle();
var corners = GetDetails(sq);
var radius = GetDetails(cir);

题:

该方法如何检测实际出现了什么类型?假设在foreach周期中我遍历了List,所以我不知道每个项目的实际类型(正方形或圆形)。

我的实际问题是:

我将不同的子类类型变量打包到基本类类型列表中。然后,我将此列表发送给一个方法,并在其中获取每个类的所有属性。我通过“反射”实现它,但是方法.GetProperties()仅返回基类的属性,但是我还需要派生类的属性。

亚伯是不同的

您应该GetType()用来获取对象的动态(实际)类型:

public void GetDetais(Shape item)
{
    var properties = item.GetType().GetProperties();
}

如果使用typeof(),则将始终使用编译时间类型Shape

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

此Scala示例中的哪个子类型函数是?

来自分类Dev

如何检查一个2父类型的2个子类型的ArrayList中的变量属于哪个子类?

来自分类Dev

基类中基类子类型的成员变量

来自分类Dev

自动将动态添加的对象属性(函数)包装在包装函数中

来自分类Dev

在C ++中将基类类型2d向量中的子类对象推回

来自分类Dev

创建一个基类与子类的静态类型的对象?

来自分类Dev

如何制作将函数包装在noexcept可检测的可调用对象中的类模板,以用作std :: unique_ptr自定义删除器?

来自分类Dev

具体类型的Java包装器类子类

来自分类Dev

Java包装器类的具体类型的子类

来自分类Dev

将每个子密钥包装在UL中

来自分类Dev

确定哪个子类正在调用父类的方法

来自分类Dev

在超类构造函数中指定哪个子类

来自分类Dev

如何在基类中创建子类对象

来自分类Dev

如何在基类构造函数中为每个子类执行特定任务

来自分类Dev

从第n个子类中删除类

来自分类Dev

用子类型初始化父类中的对象

来自分类Dev

在 ModelBinder 中实例化一个子类型对象

来自分类Dev

检测图像 URL 并包装在 IMG 标签中?

来自分类Dev

C ++当我不知道子类型时,从基类中调用子类函数

来自分类Dev

C ++当我不知道子类型时,从基类中调用子类函数

来自分类Dev

快速从其基类返回一个子类

来自分类Dev

将图像包装在 JS 中动态创建的 div 中

来自分类Dev

用子类的类型或其父类的类型创建子类对象

来自分类Dev

将子类中的对象放入超类类型的数组后如何调用子类方法?

来自分类Dev

从抽象基类返回子类的对象

来自分类Dev

如何在超类对象中分解数组并将数组元素放入Ruby中的两个子类对象

来自分类Dev

使用Jackson序列化Java对象时,无需使用包装器类即可维护子类型信息

来自分类Dev

如何在基类中获取派生类的子类型

来自分类Dev

超类类型对象的子类的构造方法?

Related 相关文章

  1. 1

    此Scala示例中的哪个子类型函数是?

  2. 2

    如何检查一个2父类型的2个子类型的ArrayList中的变量属于哪个子类?

  3. 3

    基类中基类子类型的成员变量

  4. 4

    自动将动态添加的对象属性(函数)包装在包装函数中

  5. 5

    在C ++中将基类类型2d向量中的子类对象推回

  6. 6

    创建一个基类与子类的静态类型的对象?

  7. 7

    如何制作将函数包装在noexcept可检测的可调用对象中的类模板,以用作std :: unique_ptr自定义删除器?

  8. 8

    具体类型的Java包装器类子类

  9. 9

    Java包装器类的具体类型的子类

  10. 10

    将每个子密钥包装在UL中

  11. 11

    确定哪个子类正在调用父类的方法

  12. 12

    在超类构造函数中指定哪个子类

  13. 13

    如何在基类中创建子类对象

  14. 14

    如何在基类构造函数中为每个子类执行特定任务

  15. 15

    从第n个子类中删除类

  16. 16

    用子类型初始化父类中的对象

  17. 17

    在 ModelBinder 中实例化一个子类型对象

  18. 18

    检测图像 URL 并包装在 IMG 标签中?

  19. 19

    C ++当我不知道子类型时,从基类中调用子类函数

  20. 20

    C ++当我不知道子类型时,从基类中调用子类函数

  21. 21

    快速从其基类返回一个子类

  22. 22

    将图像包装在 JS 中动态创建的 div 中

  23. 23

    用子类的类型或其父类的类型创建子类对象

  24. 24

    将子类中的对象放入超类类型的数组后如何调用子类方法?

  25. 25

    从抽象基类返回子类的对象

  26. 26

    如何在超类对象中分解数组并将数组元素放入Ruby中的两个子类对象

  27. 27

    使用Jackson序列化Java对象时,无需使用包装器类即可维护子类型信息

  28. 28

    如何在基类中获取派生类的子类型

  29. 29

    超类类型对象的子类的构造方法?

热门标签

归档