利用反射读取不同类型数据对象的数据

本文介绍了一种通过反射和泛型技术,动态读取不同数据对象属性的方法。在面对需要处理多种类型数据对象且数量可变的情况时,通过遍历管理器类型,获取泛型接口的类型,然后利用反射获取并展示每个管理器数据队列中的所有属性,实现了对数据的自动化读取。这种方法使得在增减管理器或数据时,UI能动态地解读和展示数据,降低了维护成本。
摘要由CSDN通过智能技术生成

一般情况下,当涉及到数据读取时,我们会给每个表单独定义一个数据类型,当我们读取该类数据时,相当于我们提前已经“知道”是这个类型的数据,然后定义该类型的对象来接收这些数据并读取。

这种情况(也是绝大多数碰到的情况)是我们明确知道当前要使用的数据类型。

先描述下这次的需求:

public interface IObjGroup<T> : IViewManager
{
    void Add();
    void Delete(T obj);
    IList<T> FindAll();
}

该接口需要所有持有数据对象列表的类实现(再说具体点,假如我现在有一个管理器叫Controller,还有一个管理器叫Manager,这俩管理器不是一个类型的,但是它们都需要实现这个接口)。泛型T就是所有类型的数据了(如上所说,每个表对应一个数据类型)。这样每个管理器就对应持有一种数据对象队列。

每个管理器对应一个界面,管理器的个数是可以不停增加或减少的,因此对应的界面个数也是可以增加减少的。我们在初始化时会将所有管理器和对应的数据队列拿过来,然后将每个管理器和对应的数据队列罗列出来。

因为只是简单的罗列数据,所以不需要关心每种数据对象的具体类型,只要利用反射将其中的所有属性挨个罗列即可。

要做的第一步,就是把每个管理器的类型和对应的数据类型匹配起来。

具体操作就是遍历手里所有的管理器,拿到他们的Type,然后拿到这些类实现的所有接口,再遍历这些接口,如果是泛型接口,再判断是不是我们找的这个泛型接口,找到后,把这个泛型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值