获取委托的具体返回类型

本文关键字:返回类型 获取 | 更新日期: 2023-09-27 17:56:36

如何找到签名为 IEnumerable<Func<ITab>> 的类型的具体类型?

我的构造函数采用上述类型来执行延迟加载。本质上,仅在需要时加载选项卡以减少启动时间。但是,每个具体的Tab实现都由表示选项卡名称的属性修饰。当我循环浏览我的列表时,我想获取委托的具体类型,以便获取属性值。

我知道.GetType().GetMethod("Invoke").ReturnType,但这返回ITab.我似乎只能通过调用Invoke()来找到具体类型。

是否有更好的方法可以在访问与每种具体类型相关的信息的同时使用委托实现延迟加载?

获取委托的具体返回类型

为什么在

实际调用返回它的方法之前需要知道 Tab 的类型?当它返回时,你可以只使用GetType(),然后找到属性。如果你的一个函数可以返回不同的ITab实现怎么办?特别是如果从数据库或 xml 等外部来源中选择正确的一个。需要调用该委托。

通常,您似乎组合/混淆了两个问题:一个是有关选项卡的(元)数据,另一个是选项卡加载时间的速度优化。如果现在需要元数据,但稍后需要选项卡内容,则需要拆分它们。

即不返回IEnumerable<Func<ITab>>,返回类似 IEnumerable<ITabInfo> 的内容,ITabInfo包含 1) 有关您立即需要的选项卡的信息,以及 2) 稍后要调用的委托以加载选项卡的实际内容。

您无法获得"方法将在将来的调用中返回的类型"。这相当于一个水晶球(想象一下return random.Next(2) == 0 ? (ITab)new TabTypeA() : (ITab)new TabTypeB();)。