【发布时间】:2011-03-10 17:57:30
【问题描述】:
有以下代码
public delegate object ParseHandler(string s);
public static ParseHandler GetParser(Type t)
{
MethodInfo parse = t.GetMethod("Parse", BindingFlags.Static | BindingFlags.Public,
null, new Type[] { typeof(string) }, null);
if (parse != null)
return (ParseHandler)Delegate.CreateDelegate(typeof(ParseHandler), parse, true);
return null;
}
在Delegate.CreateDelegate() 调用中出现“错误绑定到目标方法”。显然是因为 ParseHandler 被定义为返回 object 而不是类型特定的返回值。
我不知道编译类型的类型,所以我不能用泛型替换type 参数(如果我这样做了,那么整个函数就不需要了)。
对于如何处理这个问题有点困惑。所需的行为是为给定类型找到public static Parse(string) 方法并创建一个委托以供以后调用。
【问题讨论】:
-
你是不是严格卡在 .NET 2.0 平台上?
-
您能否向我们展示它失败的
Parse方法的声明? -
也许你想写的和我的
Parse<T>github.com/CodeInChaos/ChaosUtil/blob/master/Chaos.Util/… 类似,只是你可能需要用对象替换一些Ts。 -
@Mr.失望是的。
-
@Ani 采用任何整数类型或
DateTime
标签: .net reflection delegates .net-2.0