Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在这种情况下,为什么getMethod()返回null? var v=xyz.GetType(); var generic=v.GetMethod(“更新”,新类型[]{typeof(IEnumerable)})//返回空值 ... 公共类Xyz { 公共无效更新(IEnumerable翻译),其中T:ijk ..._C#_.net_Reflection - Fatal编程技术网

C# 在这种情况下,为什么getMethod()返回null? var v=xyz.GetType(); var generic=v.GetMethod(“更新”,新类型[]{typeof(IEnumerable)})//返回空值 ... 公共类Xyz { 公共无效更新(IEnumerable翻译),其中T:ijk ...

C# 在这种情况下,为什么getMethod()返回null? var v=xyz.GetType(); var generic=v.GetMethod(“更新”,新类型[]{typeof(IEnumerable)})//返回空值 ... 公共类Xyz { 公共无效更新(IEnumerable翻译),其中T:ijk ...,c#,.net,reflection,C#,.net,Reflection,调用v.GetMethods()[1]返回正确的方法。这可能是一个很好的开始-我知道这一点,但为什么它在我的情况下不起作用呢?好吧,我没有遗漏任何标志/参数IEnumerable是一个未绑定的泛型类型,与IEnumerable不同。如果GetMethod,那么调用将是一种合乎逻辑的方法e> 支持它,但它不支持。您需要一些东西。参数类型是IEnumerable,而不是IEnumerable。这是有区别的。Jeroen的评论是正确的。如果您想要不太复杂的方式,您实际上可以更改您的方法,使其非泛型:p

调用
v.GetMethods()[1]
返回正确的方法。

这可能是一个很好的开始-我知道这一点,但为什么它在我的情况下不起作用呢?好吧,我没有遗漏任何标志/参数
IEnumerable
是一个未绑定的泛型类型,与
IEnumerable
不同。如果
GetMethod,那么调用将是一种合乎逻辑的方法e> 支持它,但它不支持。您需要一些东西。参数类型是
IEnumerable
,而不是
IEnumerable
。这是有区别的。Jeroen的评论是正确的。如果您想要不太复杂的方式,您实际上可以更改您的方法,使其非泛型:
public void Update(IEnumerable translations)
因为
IEnumerable
是协变的。
var v = xyz.GetType();    
var generic = v.GetMethod("Update", new Type[] { typeof(IEnumerable<>) });//returns null

...

public class Xyz
{
    public void Update<T>(IEnumerable<T> translations) where T : ijk
...