C#中是否有基于Enum和/或类调用方法? 说我是否打电话
Controller<Actions.OnEdit, Customer>(customer);
我可以这样做吗?
public void Controller<TAction, TParam>(TParam object)
{
Action<TParam> action = FindLocalMethodName(TAction);
action(object);
}
private Action<T> FindLocalMethodName(Enum method)
{
//Use reflection to find a metode with
//the name corresponding to method.ToString()
//which accepts a parameters type T.
}
答案 0 :(得分:2)
这应该这样做。假设obj
是您要在...上调用方法的对象。
var methodInfo = ( from m in obj.GetType().GetMethods()
where m.Name == method.ToString() &&
m.ReturnType == typeof(void)
let p = m.GetParameters()
where p.Length == 1 &&
p[0].ParameterType.IsAssignableFrom(typeof(T))
select m ).FirstOrDefault();
return (Action<T>)Delegate.CreateDelegate(typeof(Action<T>), obj, methodInfo);
请注意,方法是公开的,或者反映代码可以访问,因为它没有反射,因为Silverlight对非公共方法的反映非常有限。
答案 1 :(得分:-1)
是的,您应该可以使用反射API执行此操作。
这就是你想知道的,对吧? :)