当前位置: 首页 > 编程语言 > C#

向MethodInfoGetMethod传递正确的类型参数Share

时间:2023-04-11 10:52:31 C#

向MethodInfoGetMethod传递正确的类型参数例如MethodInfofirstMethod=typeof(Enumerable).GetMethods(BindingFlags.Public|BindingFlags.Static).First(m=>m.Name=="FirstOrDefault"&&m.GetParameters().Length==1)我想简化那个过程。我正在寻找Enumerable.FirstOrDefault方法(IEnumerable)我都试过了//我只是以字符串为例。varenumerableType=typeof(IEnumerable).MakeGenericType(typeof(string));MethodInfofirstMethod=typeof(Enumerable).GetMethod("FirstOrDefault",newType[]{enumerableType});和MethodInfofirstMethod=typeof(Enumerable).GetMethod("FirstOrDefault",Type.EmptyTypes);但两者都返回空值。什么是正确的方法?不幸的是,当参数类型是泛型时,没有简单的方法来获得正确的重载。您可以使用LINQ手动执行此操作:typeof(Enumerable).GetMethods(BindingFlags.Public|BindingFlags.Static).First(x=>x.Name=="FirstOrDefault"&&x.GetParameters().Length==1&&x.GetParameters()[0].ParameterType.GetGenericTypeDefinition()==typeof(IEnumerable));在这种情况下,由于FirstOrDefault只有一个带有一个参数的重载,您可以删除最后一个条件。但是当重载需要相同数量的不同类型的参数时,这是必要的。以上就是C#学习教程:给MethodInfoGetMethod传递正确的类型参数,分享全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢