C# 使用泛型和methodinfo
我正在为一个开源项目构建一个基本的分析器。一个要求是测量方法的执行时间。虽然这很简单,但我必须在运行时之前不知道方法或其包含的类。调用探查器的方法是当用户在活动文档中从IDE调用探查器时。因此,如果class1是打开的,并且用户右键单击文档中的空白,选择profile,那么,也只有这样,类才是已知的 我有以下代码可以使用MethodInfo:C# 使用泛型和methodinfo,c#,.net,reflection,C#,.net,Reflection,我正在为一个开源项目构建一个基本的分析器。一个要求是测量方法的执行时间。虽然这很简单,但我必须在运行时之前不知道方法或其包含的类。调用探查器的方法是当用户在活动文档中从IDE调用探查器时。因此,如果class1是打开的,并且用户右键单击文档中的空白,选择profile,那么,也只有这样,类才是已知的 我有以下代码可以使用MethodInfo: MethodInfo methodInfo = typeof(t).GetMethod(s); T只是泛型类型持有者(class X,其中T:class
MethodInfo methodInfo = typeof(t).GetMethod(s);
T只是泛型类型持有者(class X,其中T:class是类签名)。s只是方法名的字符串
但是,我有一个错误:
应为类型名称,但找到参数名称
该行代码的包含方法将t作为类型为t的参数,但将其移出并不能解决问题。T只是一个对象,如果我提供一个对象名,比如类名,那么就不会有错误
有什么好处
编辑:也许激活器可以解决这个问题
另外,我可以使用where子句来限制T仅为静态类吗
谢谢也许你需要
t.GetType().GetMethod(s)
也许你需要
t.GetType().GetMethod(s)
导致此错误的原因是,typeof需要一个类型名称或参数,如typeof(int)或typeof(T),其中T是一个类型参数。看起来t是System.Type的一个实例,因此不需要typeof 您是否需要此的泛型类型?这样不行吗
public void DoSomething(object obj, string methodName)
{
MethodInfo method = obj.GetType().GetMethod(methodName);
// Do stuff
}
或
此外,没有办法将类型参数限制为静态类。我不确定这会有什么用,因为您不能拥有它的实例,它也无法实现任何可以在泛型方法中使用的接口。导致此错误的原因是,typeof需要一个类型名称或参数,如typeof(int)或typeof(t),其中t是一个类型参数。看起来t是System.Type的一个实例,因此不需要typeof
public void DoSomething(object obj, string methodName)
{
MethodInfo method = obj.GetType().GetMethod(methodName);
// Do stuff
}
您是否需要此的泛型类型?这样不行吗
public void DoSomething(object obj, string methodName)
{
MethodInfo method = obj.GetType().GetMethod(methodName);
// Do stuff
}
或
此外,没有办法将类型参数限制为静态类。我不确定这会有什么用,因为你不能拥有它的实例,它也不能实现任何可以在泛型方法中使用的接口
public void DoSomething(object obj, string methodName)
{
MethodInfo method = obj.GetType().GetMethod(methodName);
// Do stuff
}
这就成功了(与上面的两篇文章相同)
这就完成了技巧(与上面的两篇文章相同)。您能演示如何调用包含该行代码的方法吗?您能演示如何调用包含该行代码的方法吗?