【发布时间】:2019-11-25 04:06:57
【问题描述】:
我有一个类名如下的 XML 文件:
<ActiveMonitorsList>
<MonitorName>CertificatesMonitor</MonitorName>
<MonitorName>ServicesMonitor</MonitorName>
<MonitorName>LogsMonitor</MonitorName>
<MonitorName>DBMonitor</MonitorName>
</ActiveMonitorsList>
每个此类都包含一个方法:bool SingleCheck();
我想为这个 XML 文件中的每个类执行这个 bool SingleCheck() 方法。
最好的方法是什么?
这是我目前所拥有的——它不起作用:
foreach (string monitorName in monitorsList)
{
Type thisType = GetType();
MethodInfo singleMonitorMethod = thisType.GetMethod("{monitorName}.SingleCheck");
bool methodResult = singleMonitorMethod.Invoke(...);
}
- 代替 (...) - 不知道该放什么,但我想得到 方法的结果(它总是布尔值)。
- 我想作为参数传递的所有方法都是静态的。
- 我猜委托、Actions 或 Func 必须进入这里...
非常感谢您!
编辑:XML 中的每个名称都指向一个单独的类。每个类都有相同的命名方法:public static bool SingleCheck()。
我想做的是:
- 获取所有监视器名称(类名称相同)
- 在每个类中调用一个方法(它在每个类中具有相同的名称) 该列表中的课程。
编辑 - 问题已解决:
当我第一次创建我的项目时,我为所有监视器包含了单独的文件夹。然后我改变了主意,删除了这个文件夹并手动将 SAME FILES 添加到我的解决方案中。这样 - 那些文件仍然有“using <namespace>.Monitors”...
这就是为什么我无法列出这些类并且类型仍然为空的原因......
感谢所有建议! ;)
【问题讨论】:
-
你在哪里执行 foreach 循环?
Type你对GetType()的电话有什么期待? -
@Selvin 这并不是真正的重复,因为这里不仅要为静态方法调用 MethodInfo,还要在类型中查找方法。
-
我正在寻找一个 CLASS 名称,XML 包含 CLASSES 名称。在每个公共类中都有一个名为 SingleCheck() 的方法。这个方法是静态的。
-
编辑了这个问题,它很复杂,所以我不确定这是否可以理解。
标签: c# xml reflection static