gpt4 book ai didi

c# - 获取具有给定返回类型的所有方法

转载 作者:行者123 更新时间:2023-11-30 13:24:45 24 4
gpt4 key购买 nike

这段代码有错吗?它只是没有返回任何东西:

public IEnumerable<string> GetMethodsOfReturnType(Type cls, Type ret)
{
var methods = cls.GetMethods(BindingFlags.NonPublic);
var retMethods = methods.Where(m => m.ReturnType.IsSubclassOf(ret))
.Select(m => m.Name);
return retMethods;
}

它返回一个空的枚举器。

注意:我在寻找 ActionResults 的 ASP.NET MVC Controller 上调用它

GetMethodsOfReturnType(typeof(ProductsController), typeof(ActionResult));

最佳答案

其他人指出了修复方法,但我想建议 IsSubclassOf 的替代方法并包括公共(public)方法:

public IEnumerable<string> GetMethodsOfReturnType(Type cls, Type ret)
{
// Did you really mean to prohibit public methods? I assume not
var methods = cls.GetMethods(BindingFlags.NonPublic |
BindingFlags.Public |
BindingFlags.Instance);
var retMethods = methods.Where(m => m.ReturnType.IsAssignableFrom(ret))
.Select(m => m.Name);
return retMethods;
}

IsAssignableFrom ,您不需要进行额外的“返回类型是否与所需类型完全相同”测试,并且它也适用于接口(interface)。

关于c# - 获取具有给定返回类型的所有方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2693025/

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